对接多平台 API 时,最费时间的是适配响应格式:有的成功返回 data,有的返回 result;有的报错带 msg,有的带 error;前端要写 N 套解析逻辑,极易出错!分享 API 响应格式统一规范,不管成功失败,结构保持一致:
- 统一响应结构(必包含 5 个字段)✅ 标准格式:{"code": 状态码(200 = 成功,400 = 参数错,403 = 权限不足,429 = 限流,500 = 服务错),"message": 描述信息(成功写 "success",失败写具体原因,如 "商品 ID 不存在"),"data": 业务数据(成功返回结果,失败返回 null),"timestamp": 时间戳(毫秒级,如 1718000000000,便于排查问题),"requestId": 请求 ID(如 "req-20240610153000001",分布式系统排错关键)}
❌ 错误示例:成功返回:{"title":"手机","price":2999}(无状态码、无描述)失败返回:{"error":"参数错误","code":400}(字段不一致,无 timestamp)
- 数据格式统一约定
- 日期时间:统一用 ISO 格式(yyyy-MM-dd HH:mm:ss)或时间戳,避免 "2024/6/10"、"10-06-2024" 等混用;
- 金额:统一用数值类型(int/float),如 99.99,不用字符串 "99.99"(避免前端额外转换);
- 布尔值:用 true/false,不用 1/0、"是"/"否";
- 空值:所有空数据统一返回 null,不用 ""、[]、{} 混用。
- 分页数据标准化列表查询接口的 data 字段,统一返回分页对象,避免数据结构混乱:{"code": 200,"message": "success","data": {"list": [{"id":1,"name":"商品 1"},{"id":2,"name":"商品 2"}], // 数据列表"total": 100, // 总条数"page": 1, // 当前页码"pageSize": 20, // 每页条数"totalPage": 5 // 总页数},"timestamp": 1718000000000,"requestId": "req-20240610153000001"}
- 错误信息精准化
- 400 参数错:明确指出错误字段,如 "message":"手机号格式错误" 而非 "参数错误";
- 403 权限错:说明缺失的权限,如 "message":"无订单查询权限";
- 500 服务错:不返回具体异常堆栈,只返回 "服务临时异常,请稍后重试",避免泄露敏感信息。
遵循这套规范后,前端只需写一套解析逻辑,对接任何接口都能快速适配,后端维护也更清晰。你们