第六站:JSON API 与契约
本站先用 Django 原生 request/response 建立 API 心智模型。DRF 是成熟选修项,但第三方兼容矩阵不应被课程偷偷决定。
运行入口
bash
curl -i -H 'Accept: application/json' http://127.0.0.1:8000/api/tickets/
python manage.py test tickets实现见原生 JSON API 与长期契约和分页、错误与版本演进。
交付物
- 列表响应有明确版本、结果数组和分页游标/页码。
- 创建接口只接受 JSON,未知字段和无效类型返回稳定错误。
- 输出使用白名单,不序列化整个模型
__dict__。 - 契约测试覆盖 200/201/400/401/403/404/405/415。
深水边界
JSON 解析成功只证明语法正确;业务校验、对象权限和并发仍需单独处理。Cookie 会话认证的写请求继续需要 CSRF。Token/JWT 也不自动提供撤销与对象授权。
练习(先做)
- 实现登录用户的工单列表与创建接口。
- 对未知字段返回结构化错误,避免静默忽略拼写错误。
- 写测试证明响应绝不包含内部审计字段。