我打算在後端的Json響應中添加一個額外的字段。由於此API已被大量客戶端使用,因此我無法更改每個客戶端。 這會影響現有的前端客戶端功能嗎?在後端代碼中添加JSON中的額外字段
0
A
回答
0
這會影響現有客戶嗎?
我們不知道沒有審計所有的客戶端。
這是否會影響現有客戶?
不,不應該,但是......
難道這種影響現有的客戶?
是的。某些客戶端可能會枚舉JSON文檔中的字段(對於RPC式API,元編程或反射更常見)。他們可能會或可能不會徹底破裂,但在這種情況下,結果是不明確的。
那麼我該怎麼做?
有兩種選擇:
添加一個新的領域應該是安全的。基於總體風險較低的預期,您只需付出最少的努力,只需添加該字段即可。 (IMO這是實用的選項)。
您創建了一個新的API,它添加了字段/ v2 /或其他帶有額外字段的端點,以便新客戶端可以選擇加入新數據和舊數據客戶不受影響。 (這是防彈的選擇。)
您也可以使新的領域選擇加入,如果客戶端的請求經過一定的頭,使人們可以測試他們的客戶端的兼容性發布新API之前(基本上#2,但是暫時的)。
哪種解決方案是合適的取決於您的API客戶端的性質和數量。例如,如果嵌入式設備中有大量客戶端,則您可能不應更改現有的API。 OTOH如果您的客戶都使用公共庫與您的API交互並且可以輕鬆更新,則可以先更新客戶端庫,然後在大多數客戶更新後更新API。
我可以讓這更容易嗎?
是的,如果你有一個API合同/設計文件,指出「客戶應該預料到新的領域可以被添加到現有的端點」,那麼這從本質上變成一個安全的操作所有的時間。
很好考慮您的整體立場是朝向向後兼容性,棄用和升級。展望未來,您應該寫下來,以便您和您的客戶對您的API如何發展具有相同的期望。通過這種方式,您可以參考設計文檔來作出此決定,客戶作者可以參考它來作出適當的編程決定。
相關問題
- 1. PHP代碼將額外的字符添加到JSON字符串
- 2. Bootstrap添加額外字段
- 3. 添加額外的字段的OpenERP 7
- 4. 在運行時在java中添加額外的代碼
- 5. 設計:添加額外的字段
- 6. 向todo.js添加額外的字段
- 7. sfWidgetFormDoctrineChoice添加額外的選擇字段
- 8. 擴展aspnet_users添加額外的字段
- 9. 將額外的字段添加到fullcalendar
- 10. 如何在下面的PHP代碼中添加額外的類?
- 11. 代碼中的JSON字段
- 12. 在數據庫表中不是字段的hibernate bean中添加額外字段
- 13. 在MVC的SelectList中添加額外的數據文本字段
- 14. 如何向實體的序列化JSON添加額外字段
- 15. 在asp.net中爲登錄功能添加額外的字段
- 16. 如何通過nutch在hbase中添加額外的字段?
- 17. 在jtable中添加記錄的額外字段
- 18. 是否可以在Sequelize關係中添加額外的字段?
- 19. 如何在joomla 3和2.5中添加額外的字段?
- 20. 如何在SignUp表單中添加額外的字段SecureSocial
- 21. 從後面的代碼中添加額外的中繼器項目或循環
- 22. 額外的文字被添加到中繼器字段標籤
- 23. Logrus爲contextlogger添加額外字段
- 24. django-registration-redux添加額外字段
- 25. 向Django站點添加額外字段
- 26. 向FOAF文件添加額外字段
- 27. 使用Django添加額外的\\字符JSON編碼
- 28. 如何在Drupal 8菜單項中添加額外的字段。我想添加一個額外的圖像域
- 29. 如何在joomla 2.5註冊表單中添加額外字段?
- 30. Rails在設計註冊中添加額外字段
如果您添加一個額外的字段,我認爲它不會影響現有客戶端,因爲他們仍然會獲取所需的所有數據。 –
取決於如何在這些客戶端中解析JSON。 – Walk
只要您以正確的格式發送響應,就不應該這樣做。另請閱讀https://stackoverflow.com/help/how-to-ask和MCVE。如果您沒有向我們展示任何代碼,您如何期待我們幫助您解決問題? – Gautam