在后端代码中添加JSON中的额外字段

时间:2017-10-12 06:44:48

标签: javascript java json rest api

我打算在后端的Json响应中添加一个额外的字段。 由于这个API被许多客户使用,我将无法更改每个客户端。 这会影响现有的前端客户端功能。

1 个答案:

答案 0 :(得分:0)

  

这会影响现有客户吗?

我们无法在不审核所有客户的情况下知道。

  

这是否会影响现有客户?

不,它不应该,但是......

  

这会影响现有客户吗?

是。某些客户端可能会枚举JSON文档中的字段(对于RPC样式的API,元编程或反射更常见)。它们可能会或可能不会完全破坏,但在这种情况下,结果是未指定的。

  

那我该怎么办?

有两种选择:

  1. 添加新字段应该是安全的。您可以根据整体风险较低的预期应用最少的工作量,只需添加字段即可。 (IMO这是务实的选择。)

  2. 您创建了一个新的API,用于添加字段,/ v2 /或其他具有额外字段的端点,以便新客户端可以选择加入新数据,旧客户端不受影响。 (这是防弹选项。)

  3. 如果客户端在请求中传递了某些标头,您也可以选择新字段,以便人们可以在新API发布之前测试其客户端的兼容性(基本上是#2,但是是临时的)。

    哪种解决方案适合取决于API客户端的性质和数量。例如,如果嵌入式设备中有大量客户端,则可能不应更改现有API。 OTOH如果您的客户都使用公共库与您的API进行交互并且可以轻松更新,您可以先更新客户端库,然后在大多数客户更新后更新API。

      

    我可以让这更容易吗?

    是的,如果您有一份API合同/设计文档,声明“客户应该期望新字段可以添加到现有端点”,那么这基本上就是一个安全的操作。

    考虑您的向后兼容性,弃用和升级的整体立场是很好的。展望未来你应该写下来,这样你和你的客户对你的API将如何发展有着相同的期望。通过这种方式,您可以参考设计文档来做出此决定,客户作者可以参考它来做出适当的编程决策。