REST API
使用 Flask 构建返回 JSON 的 REST 风格 API。Flask 本身就足够轻量,配合蓝图做版本化管理即可,无需额外框架。
基本结构
视图直接返回 dict/list 时,Flask 会自动序列化为 JSON 并设置 Content-Type: application/json:
请求体校验
request.get_json() 在请求不是 JSON 时会抛 415/400,可用 silent=True 改为返回 None 自行处理。生产项目建议用 Pydantic 或 Marshmallow 做结构化校验:
分页
约定查询参数并返回统一结构:
统一错误响应
让 API 蓝图下的错误也返回 JSON(而不是 HTML 错误页):
认证
常见方案:
- Session Cookie:同域前后端一体应用最简单。
- Token(Bearer):客户端在
Authorization: Bearer <token>头中携带;服务端校验后放入g.current_user。 - JWT:使用
Flask-JWT-Extended扩展,支持刷新令牌、过期管理。
跨域(CORS)
前后端分离部署在不同域名时需要启用 CORS:
版本化建议
- URL 前缀版本化(
/api/v1/)最直观,每个版本一个蓝图。 - 破坏性变更(删字段、改语义)才升版本;新增字段保持向后兼容即可。