接口返回值要为前端留出判断空间
接口返回值要为前端留出判断空间
接口设计不只是把数据库字段吐出去。一个好用的接口,应该让前端容易判断状态、容易展示文案、容易处理空数据,也容易在业务变化时扩展。
不要只返回布尔值
很多业务一开始喜欢返回 enabled、passed、finished 这类布尔字段。它们简单直接,但表达空间太小。页面后来可能需要区分待处理、处理中、已完成、已失败、已取消,布尔值就不够用了。
我更倾向于返回明确的状态码和状态文案。状态码给程序判断,状态文案给页面展示或兜底。这样既保留机器可读性,也减少前端硬编码。
空数据也要设计
空列表、空对象、字段缺失,这些情况都要提前约定。比如列表接口返回空数组,比返回空值更容易处理;金额、时间、枚举文案这类字段,如果后端不能保证有值,就要说明前端应该如何兜底。
空数据不是异常,它是业务状态的一部分。把空数据设计清楚,页面体验会稳定很多。
错误信息要可行动
错误响应不要只写系统异常。用户能处理的错误,要给出可理解的提示;开发需要排查的错误,要带上错误码和请求标识。这样前端、测试、后端看到同一个问题时,能快速对齐。
错误信息也不应该泄露内部实现。数据库表名、内部服务名、堆栈细节不适合直接暴露给用户。
复盘
接口返回值的核心是协作。后端不仅要关心数据从哪里来,也要关心数据会被谁消费、如何展示、如何判断、失败时如何兜底。这样的接口才更像产品能力,而不是数据库映射。
参考
- Microsoft REST API Guidelines:https://github.com/microsoft/api-guidelines
- JSON Schema 文档:https://json-schema.org/learn/