2017-10-12 86 views
0

我打算在后端的Json响应中添加一个额外的字段。由于此API已被大量客户端使用,因此我无法更改每个客户端。 这会影响现有的前端客户端功能吗?在后端代码中添加JSON中的额外字段

+0

如果您添加一个额外的字段,我认为它不会影响现有客户端,因为他们仍然会获取所需的所有数据。 –

+0

取决于如何在这些客户端中解析JSON。 – Walk

+0

只要您以正确的格式发送响应,就不应该这样做。另请阅读https://stackoverflow.com/help/how-to-ask和MCVE。如果您没有向我们展示任何代码,您如何期待我们帮助您解决问题? – Gautam

回答

0

这会影响现有客户吗?

我们不知道没有审计所有的客户端。

这是否会影响现有客户?

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

难道这种影响现有的客户?

是的。某些客户端可能会枚举JSON文档中的字段(对于RPC式API,元编程或反射更常见)。他们可能会或可能不会彻底破裂,但在这种情况下,结果是不明确的。

那么我该怎么做?

有两种选择:

  1. 添加一个新的领域应该是安全的。基于总体风险较低的预期,您只需付出最少的努力,只需添加该字段即可。 (IMO这是实用的选项)。

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

您也可以使新的领域选择加入,如果客户端的请求经过一定的头,使人们可以测试他们的客户端的兼容性发布新API之前(基本上#2,但是暂时的)。

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

我可以让这更容易吗?

是的,如果你有一个API合同/设计文件,指出“客户应该预料到新的领域可以被添加到现有的端点”,那么这从本质上变成一个安全的操作所有的时间。

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

相关问题