2017-10-12 53 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如何發展具有相同的期望。通過這種方式,您可以參考設計文檔來作出此決定,客戶作者可以參考它來作出適當的編程決定。

相關問題