写后端接口,RESTful 是主流标准。Flask 虽然轻量,但配合几个小技巧,做出符合 RESTful 风格的 API 并不难。

这篇分享我实战中常用的设计方法,帮你理清思路和代码结构。


一、RESTful 基本原则回顾

  • 资源(Resource)为核心,URL 指代资源,比如 /users/orders/123
  • HTTP 方法代表动作:
    • GET 读资源
    • POST 新建资源
    • PUT 更新资源(整体替换)
    • PATCH 更新资源(部分更新)
    • DELETE 删除资源
  • 使用状态码体现请求结果(200、201、400、404、500 等)

二、Flask 如何快速做 RESTful API?

1. 使用 Flask 原生路由 + request + jsonify

from flask import Flask, request, jsonify

app = Flask(__name__)

users = []

@app.route("/users", methods=["GET", "POST"])
def users_handler():
    if request.method == "GET":
        return jsonify(users)
    elif request.method == "POST":
        user = request.json
        users.append(user)
        return jsonify(user), 201

@app.route("/users/<int:user_id>", methods=["GET", "PUT", "DELETE"])
def user_handler(user_id):
    if user_id >= len(users):
        return jsonify({"error": "User not found"}), 404

    if request.method == "GET":
        return jsonify(users[user_id])
    elif request.method == "PUT":
        users[user_id] = request.json
        return jsonify(users[user_id])
    elif request.method == "DELETE":
        deleted = users.pop(user_id)
        return jsonify(deleted)

2. 状态码和异常处理

别忘了给响应加上合适状态码,比如新增资源返回 201 Created

可以用 Flask 的 abort 抛错:

from flask import abort

if user_id >= len(users):
    abort(404, description="User not found")

3. 使用 Flask-RESTful 或 Flask-RESTX 提升效率

安装:

pip install flask-restful

示例:

from flask_restful import Api, Resource, reqparse

app = Flask(__name__)
api = Api(app)

users = []

parser = reqparse.RequestParser()
parser.add_argument('name')
parser.add_argument('email')

class UserList(Resource):
    def get(self):
        return users

    def post(self):
        args = parser.parse_args()
        users.append(args)
        return args, 201

api.add_resource(UserList, '/users')

三、设计技巧分享

  • 资源名称用复数,URL 简洁清晰
  • 输入验证最好用库,比如 marshmallowpydantic
  • 返回格式保持一致,通常是 { "code": 0, "msg": "ok", "data": {...} }
  • 错误统一处理,避免抛出默认 HTML 错误页面
  • API 文档写好(Swagger / OpenAPI),方便前后端对接

四、总结

Flask 设计 RESTful API 不复杂,关键是保持思路清晰:

  • URL 设计资源导向
  • HTTP 动作表达操作
  • 合理使用状态码和异常
  • 代码尽量结构化,易维护

添加微信