1. RESTful API设计基础认知
第一次接触RESTful API时,我以为只要用HTTP返回JSON数据就是RESTful了。直到在真实项目中踩了无数坑后才明白,这就像把自行车叫跑车——虽然都能跑,但完全不是一回事。RESTful API本质上是一种架构风格(Architectural Style),而不仅仅是数据格式。
1.1 什么是真正的REST
Roy Fielding博士在2000年提出的REST(Representational State Transfer)包含六个核心约束:
- 客户端-服务器分离
- 无状态(Stateless)
- 可缓存(Cacheable)
- 统一接口(Uniform Interface)
- 分层系统(Layered System)
- 按需代码(Code-On-Demand)
在实际API设计中,我们主要关注前四个。我曾见过一个"伪REST"案例:某个电商API要求客户端在header里带session_id来维持状态,这直接违反了无状态原则。正确的做法应该是每个请求都携带完整的认证信息(如JWT)。
1.2 HTTP方法的语义化使用
新手最容易犯的错误就是滥用POST方法。去年review代码时,我发现团队里有这样的路由设计:
python复制@app.post('/api/books/delete/<id>') # 错误示范!
这就像用铲车开啤酒瓶——工具用错了地方。HTTP方法应该严格对应CRUD操作:
- GET:获取资源(幂等)
- POST:创建资源
- PUT:全量更新(幂等)
- PATCH:部分更新
- DELETE:删除资源(幂等)
在Flask中正确的写法应该是:
python复制@app.delete('/api/books/<id>') # 符合REST规范
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Python实现RESTful API的技术选型
2.1 框架对比:Flask vs FastAPI
我在三个生产项目中分别使用过Flask-RESTful和FastAPI,对比体验如下:
| 特性 | Flask-RESTful | FastAPI |
|-----------
