1 回答

TA貢獻1862條經(jīng)驗 獲得超6個贊
不遵循這些標(biāo)準(zhǔn)而只是采用我們自己的范例并發(fā)布所有內(nèi)容的后果是什么?
您放棄的是通用組件在了解請求是安全的情況下可以提供的優(yōu)勢。
例如,Web 瀏覽器可以通過主動獲取您可能需要的資源表示來優(yōu)化用戶體驗。
同樣,在不穩(wěn)定的網(wǎng)絡(luò)上,如果響應(yīng)丟失,通用組件可以知道重試請求——因為請求的語義保證這樣做沒有風(fēng)險。
此外,如果一切都是 POST,那么您將不斷從 HTTP 感知緩存中逐出表示。 緩存約束在 REST 架構(gòu)風(fēng)格中很重要——事實上我們可以從網(wǎng)絡(luò)下載一次表示然后重新使用它,這是擴展網(wǎng)絡(luò)的關(guān)鍵部分。
HTTP 規(guī)范的一個有趣的角落是,它304 Not Modified
不是POST 請求的允許響應(yīng)代碼之一。沒有條件 GET 的模擬。
當(dāng)一切正常時POST
,您正在采用一個應(yīng)用程序協(xié)議并將其變成一個啞消息隧道,僅向通用組件提供對正在發(fā)生的事情的最弱可能的語義描述。
這并不一定意味著對所有內(nèi)容都使用 POST 是錯誤的。SOAP 走的是這條路,而 GraphQL 似乎也在走這條路。HTTP 沒有針對遠程過程調(diào)用風(fēng)格進行優(yōu)化,但它是有能力的。
添加回答
舉報