直接回答:AI设计后端API时,先让它写API契约,再生成代码。一个可上线的API至少要明确资源/动作、请求响应Schema、鉴权与权限、HTTP状态和业务错误、幂等与重试、分页/过滤、版本和可观测性。OpenAPI适合把这些契约变成机器可读规范。[1]

第一步:先定义资源和业务动作
不要从“帮我写一个Express接口”开始。先写:谁调用、要完成什么业务动作、输入是什么、成功后系统产生什么状态变化、失败条件有哪些。然后再决定路径和HTTP方法。
第二步:用OpenAPI锁定请求与响应
OpenAPI Specification是描述HTTP API的开放标准,可用JSON或YAML表达路径、参数、Schema、响应和安全方案。[1] 让AI先生成OpenAPI草稿,再由前后端一起Review,比代码写完再补文档更容易发现契约冲突。
第三步:HTTP语义要一致
RFC 9110定义了HTTP方法、状态码和语义。[2] 设计时至少区分:认证失败、没有权限、资源不存在、冲突、校验失败、限流和服务端错误,不要所有异常都返回200或500。
第四步:鉴权和授权要分开
OAuth 2.0定义资源所有者、客户端、授权服务器和资源服务器等角色,并通过token实现受限访问。[3] 但“拿到token”只是认证/授权链的一部分,API仍要按用户、组织、角色、资源所有权做权限判断。
第五步:错误对象要给程序稳定处理
| 字段 | 用途 |
|---|---|
| code | 稳定机器码,例如ORDER_ALREADY_PAID |
| message | 给开发者或用户看的说明 |
| request_id | 日志追踪 |
| details | 字段级校验错误等结构化信息 |
第六步:写操作必须考虑幂等
HTTP语义中有幂等方法的概念;实际业务里的POST写操作也常需要额外幂等机制。Stripe官方API使用客户端生成的idempotency key识别重复重试,从而避免同一操作被执行多次。[2][4] 支付、下单、发放权益、任务创建等场景尤其要设计。
第七步:分页、过滤和排序也属于契约
列表接口要统一页大小上限、cursor/offset策略、排序字段、空值和过滤组合;否则AI生成多个端点时很容易各写一套。
第八步:让AI同时生成契约测试
- 合法请求是否符合Schema;
- 缺字段和非法枚举;
- 401/403边界;
- 重复idempotency key;
- 并发冲突;
- 分页边界;
- 错误对象格式。
API设计提示词模板
业务动作:创建订单并预占库存。
调用方:Web / Mobile。
请先输出OpenAPI契约,不写实现代码。
必须定义:
- request/response schema
- auth与资源权限
- HTTP状态码+稳定业务错误码
- idempotency与重复请求行为
- 并发冲突
- pagination/filter(如有)
- request_id与审计字段
最后生成契约测试清单。参考来源
- OpenAPI Initiative:OpenAPI Specification(核验于 2026-08-08)
- RFC Editor:RFC 9110 HTTP Semantics(核验于 2026-08-08)
- RFC Editor:RFC 6749 OAuth 2.0(核验于 2026-08-08)
- Stripe Docs:Idempotent requests(核验于 2026-08-08)
更新记录
- 2026-08-08:核验OpenAPI、HTTP、OAuth与幂等官方规范/文档。
© 版权声明
文章版权归作者所有,未经允许请勿转载。