后端、接口与数据 · 综合

设计一个能长期共处的接口

一句话: 好接口是可预测、一致而无聊的——它里面的每一个惊喜,都会变成使用者反复提出的问题和一个bug。

一致性先于漂亮

每条路由用同一套命名规范、同一种响应结构、同一种日期格式、同一种错误结构。十条一致的路由,比五条精妙加五条各不相同的更容易用。

返回稳定的结构:一个带数据和元数据的包装对象,这样加字段时不会破坏调用方。

会回头找你的决定

分页。事先决定——按偏移量还是按游标——并在每个列表里都支持。没有分页的列表总会超出预期地增长。

筛选与排序。要定义好并写进文档,而不是一个让每个调用方自创规则的自由字段。

标识符。稳定、非连续,并且不通过数字泄漏业务信息。

错误是契约的一部分

正确的状态码、一个可以据以分支的固定错误标识、一条可读的消息,以及一个便于排查的请求标识。一个每次错误都返回不同自由文本的接口,会逼着调用方去比对字符串。

深入一层

从代码本身生成接口文档,这样文档不会过期,并提供一个带假数据的测试环境。发布之前:让一个没写过这个接口的人照着它实现一个完整场景——他提出的每一个问题都是设计缺陷,而不是他理解上的不足。