在后端代码中添加JSON中的额外字段
答
这会影响现有客户吗?
我们不知道没有审计所有的客户端。
这是否会影响现有客户?
不,不应该,但是......
难道这种影响现有的客户?
是的。某些客户端可能会枚举JSON文档中的字段(对于RPC式API,元编程或反射更常见)。他们可能会或可能不会彻底破裂,但在这种情况下,结果是不明确的。
那么我该怎么做?
有两种选择:
添加一个新的领域应该是安全的。基于总体风险较低的预期,您只需付出最少的努力,只需添加该字段即可。 (IMO这是实用的选项)。
您创建了一个新的API,它添加了字段/ v2 /或其他带有额外字段的端点,以便新客户端可以选择加入新数据和旧数据客户不受影响。 (这是防弹的选择。)
您也可以使新的领域选择加入,如果客户端的请求经过一定的头,使人们可以测试他们的客户端的兼容性发布新API之前(基本上#2,但是暂时的)。
哪种解决方案是合适的取决于您的API客户端的性质和数量。例如,如果嵌入式设备中有大量客户端,则您可能不应更改现有的API。 OTOH如果您的客户都使用公共库与您的API交互并且可以轻松更新,则可以先更新客户端库,然后在大多数客户更新后更新API。
我可以让这更容易吗?
是的,如果你有一个API合同/设计文件,指出“客户应该预料到新的领域可以被添加到现有的端点”,那么这从本质上变成一个安全的操作所有的时间。
很好考虑您的整体立场是朝向向后兼容性,弃用和升级。展望未来,您应该写下来,以便您和您的客户对您的API如何发展具有相同的期望。通过这种方式,您可以参考设计文档来作出此决定,客户作者可以参考它来作出适当的编程决定。
如果您添加一个额外的字段,我认为它不会影响现有客户端,因为他们仍然会获取所需的所有数据。 –
取决于如何在这些客户端中解析JSON。 – Walk
只要您以正确的格式发送响应,就不应该这样做。另请阅读https://stackoverflow.com/help/how-to-ask和MCVE。如果您没有向我们展示任何代码,您如何期待我们帮助您解决问题? – Gautam