命名规范统一是第一步
开发团队里常遇到的问题是,不同人写的接口命名风格五花八门。比如一个同事用 getUserInfo,另一个却写成 fetchUser,第三个又整出个 retrieveUserProfile。调用者一看就懵,到底哪个才是对的?
解决办法很简单:定规则。比如统一使用动词+名词结构,动词限定为 get、create、update、delete 这几个标准动作,资源名一律用复数形式。这样所有获取用户的接口都叫 get/users,创建订单就是 create/orders,一目了然。
数据格式别乱来
有些接口返回的数据带 camelCase,有些却是 snake_case,前端处理起来得写一堆转换逻辑。这就像去超市买东西,有的商品标价用人民币,有的用美元,结账时还得换算。
团队内部要明确:JSON 字段统一用 camelCase 或统一用 snake_case。推荐前者,尤其前后端都是 JavaScript 技术栈时更顺手。一旦定了,所有接口都得遵守,后端别因为某个老服务用了 Python 就特立独行。
错误响应也要整齐划一
见过太多系统,这个接口报错返回 { error: 'not found' },那个接口却是 { message: 'invalid id', code: 400 },还有的直接抛原始异常堆栈。前端想统一处理错误提示,结果得写一堆 if-else 判断。
建议所有错误响应保持相同结构:
{
"success": false,
"errorCode": "USER_NOT_FOUND",
"message": "用户不存在",
"timestamp": "2023-11-05T10:00:00Z"
}
这样前端只要判断 success 字段就能决定后续流程,errorCode 可用于国际化提示,整个流程清爽多了。
版本控制别临时抱佛脚
一开始没考虑版本,等要改接口时才发现,一动就崩掉一堆老客户端。最后只能堆新字段、留旧逻辑,接口越拖越胖。
从第一个版本就开始规划,URL 带上 /v1/ 前缀。等要调整字段或行为时,推出 /v2/,老接口继续运行一段时间再下线。这样升级有缓冲,不会让合作方半夜打电话骂人。
文档和实现别脱节
很多人写完代码才补文档,结果文档和实际返回差了一大截。新来的同事照着文档调试,折腾半天发现根本对不上。
用 OpenAPI(原 Swagger)这类工具,在代码里加注解,启动时自动生成文档。改一行字段,文档自动更新。省事不说,还能顺手做参数校验,一举两得。
团队协作靠约定不靠自觉
光口头说“大家注意一致”没用。把命名规则、状态码范围、分页格式这些写成《API 设计手册》,放进项目根目录的 docs/ 文件夹。新人入职先看这个,PR 审核时拿它当 checklist。
再配上 ESLint 插件或 CI 检查,接口路径不符合规范直接不让合并。制度比自觉靠谱多了。