使用 Python 构建一个简单的 RESTful API

昨天 3阅读

在现代的软件开发中,RESTful API(Representational State Transfer Application Programming Interface)已经成为前后端分离架构中的核心组件。通过 RESTful API,前端应用可以轻松地与后端服务进行通信,获取或修改数据。

本文将介绍如何使用 Python 和 Flask 框架构建一个简单的 RESTful API,并展示如何实现基本的 CRUD(创建、读取、更新、删除)操作。我们将使用内存中的字典来存储数据,适合初学者理解和学习。最后,我们还将展示一些测试用例和代码运行结果。


1. 环境准备

在开始之前,请确保你的系统已经安装了以下工具:

Python 3.xpip(Python 包管理器)Postman 或 curl(用于测试 API)

你可以使用 pip 安装 Flask:

pip install Flask

2. 创建 Flask 应用

我们首先创建一个名为 app.py 的文件,并导入必要的模块:

from flask import Flask, request, jsonifyapp = Flask(__name__)

这里我们导入了 Flask 模块,并创建了一个 Flask 应用实例。接下来,我们定义一个全局变量作为我们的“数据库”——一个保存用户信息的字典列表:

users = [    {"id": 1, "name": "Alice", "email": "alice@example.com"},    {"id": 2, "name": "Bob", "email": "bob@example.com"}]

3. 实现 RESTful API 路由

3.1 获取所有用户信息(GET /users)

@app.route('/users', methods=['GET'])def get_users():    return jsonify(users), 200

这个路由返回当前所有的用户数据,以 JSON 格式响应客户端。

3.2 获取单个用户信息(GET /users/

@app.route('/users/<int:user_id>', methods=['GET'])def get_user(user_id):    user = next((user for user in users if user['id'] == user_id), None)    if user:        return jsonify(user), 200    else:        return jsonify({"error": "User not found"}), 404

该接口根据用户 ID 返回特定用户的信息。如果找不到用户,则返回 404 错误。

3.3 创建新用户(POST /users)

@app.route('/users', methods=['POST'])def create_user():    data = request.get_json()    new_user = {        "id": len(users) + 1,        "name": data.get('name'),        "email": data.get('email')    }    users.append(new_user)    return jsonify(new_user), 201

此接口接收一个 JSON 请求体,从中提取 nameemail 字段,生成一个新的用户对象并添加到列表中。

3.4 更新用户信息(PUT /users/

@app.route('/users/<int:user_id>', methods=['PUT'])def update_user(user_id):    data = request.get_json()    user = next((user for user in users if user['id'] == user_id), None)    if user:        user['name'] = data.get('name', user['name'])        user['email'] = data.get('email', user['email'])        return jsonify(user), 200    else:        return jsonify({"error": "User not found"}), 404

此接口允许你更新指定 ID 用户的信息。如果没有提供字段,则保留原值。

3.5 删除用户(DELETE /users/

@app.route('/users/<int:user_id>', methods=['DELETE'])def delete_user(user_id):    global users    users = [user for user in users if user['id'] != user_id]    return jsonify({"message": "User deleted"}), 200

该接口从列表中删除指定 ID 的用户。


4. 启动 Flask 应用

在文件末尾添加如下代码启动服务器:

if __name__ == '__main__':    app.run(debug=True)

完整代码如下:

from flask import Flask, request, jsonifyapp = Flask(__name__)users = [    {"id": 1, "name": "Alice", "email": "alice@example.com"},    {"id": 2, "name": "Bob", "email": "bob@example.com"}]@app.route('/users', methods=['GET'])def get_users():    return jsonify(users), 200@app.route('/users/<int:user_id>', methods=['GET'])def get_user(user_id):    user = next((user for user in users if user['id'] == user_id), None)    if user:        return jsonify(user), 200    else:        return jsonify({"error": "User not found"}), 404@app.route('/users', methods=['POST'])def create_user():    data = request.get_json()    new_user = {        "id": len(users) + 1,        "name": data.get('name'),        "email": data.get('email')    }    users.append(new_user)    return jsonify(new_user), 201@app.route('/users/<int:user_id>', methods=['PUT'])def update_user(user_id):    data = request.get_json()    user = next((user for user in users if user['id'] == user_id), None)    if user:        user['name'] = data.get('name', user['name'])        user['email'] = data.get('email', user['email'])        return jsonify(user), 200    else:        return jsonify({"error": "User not found"}), 404@app.route('/users/<int:user_id>', methods=['DELETE'])def delete_user(user_id):    global users    users = [user for user in users if user['id'] != user_id]    return jsonify({"message": "User deleted"}), 200if __name__ == '__main__':    app.run(debug=True)

5. 测试 API 接口

我们可以使用 curl 或 Postman 来测试各个接口。

示例:创建一个新用户

curl -X POST http://localhost:5000/users \     -H "Content-Type: application/json" \     -d '{"name": "Charlie", "email": "charlie@example.com"}'

响应:

{    "id": 3,    "name": "Charlie",    "email": "charlie@example.com"}

示例:获取所有用户

curl http://localhost:5000/users

响应:

[    {"id": 1, "name": "Alice", "email": "alice@example.com"},    {"id": 2, "name": "Bob", "email": "bob@example.com"},    {"id": 3, "name": "Charlie", "email": "charlie@example.com"}]

示例:更新用户信息

curl -X PUT http://localhost:5000/users/3 \     -H "Content-Type: application/json" \     -d '{"name": "Charlie Smith"}'

响应:

{    "id": 3,    "name": "Charlie Smith",    "email": "charlie@example.com"}

示例:删除用户

curl -X DELETE http://localhost:5000/users/3

响应:

{"message": "User deleted"}

6. 总结

通过本文的学习,我们了解了如何使用 Flask 构建一个简单的 RESTful API,并实现了基本的 CRUD 操作。虽然我们使用的是内存中的数据结构,但这个示例为理解 Web API 的工作原理打下了坚实的基础。

在实际项目中,建议将数据持久化到数据库中(如 SQLite、MySQL、PostgreSQL),并加入身份验证、分页、错误处理等高级功能。此外,还可以使用 Flask 扩展如 Flask-SQLAlchemy、Flask-RESTful 来提高开发效率。

希望这篇文章能帮助你更好地理解 RESTful API 的构建过程,并激发你对后端开发的兴趣!

免责声明:本文来自网站作者,不代表CIUIC的观点和立场,本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。客服邮箱:ciuic@ciuic.com

目录[+]

您是本站第5381名访客 今日有14篇新文章

微信号复制成功

打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!