REST API扩展JSON响应新增属性,是否不会影响现有客户端?
REST API 字段新增的兼容性问题
现有一个REST API的GET端点/api/v1/unit/{id},原返回JSON格式如下:
{ "id":123, "a":123 }
若为该返回JSON新增一个属性b,新JSON格式如下:
{ "id" : 123, "a" : 123, "b" : 123 }
请问这样操作是否不会对该端点的现有客户端造成影响?还是此做法属于不良实践,应创建返回新版JSON的新端点(如/api/v2/unit/{id})?
回答
- 这种新增字段的操作一般不会影响现有客户端:符合JSON规范的主流客户端(不管是用成熟框架还是原生解析逻辑)都会自动忽略未定义的额外字段,只会处理自己关注的
id和a字段,完全不影响原有功能的运行。除非有极少数老旧客户端是手动写了严格的字段校验逻辑(比如要求返回的字段必须完全匹配预设列表,多字段就抛出错误),但这种情况非常罕见。 - 这不属于不良实践,反而符合REST API的向后兼容设计原则:API版本号的升级应该留给会破坏现有客户端的变更——比如删除原有字段、修改字段的类型/含义、调整请求参数规则、改变接口响应状态码逻辑等。单纯新增字段属于兼容型更新,不需要创建v2版本的端点。
内容的提问来源于stack exchange,提问作者komen
相关产品推荐
相关产品推荐

