3 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
PUT
用于創(chuàng)建/替換您指定的 URI 處的資源。
因此,如果一個(gè)資源存在,它有一個(gè)客戶端知道的 URI,并且通過(guò)請(qǐng)求PUT
替換那里的內(nèi)容,這PUT
是最有意義的。
PUT
相對(duì)于 POST的一大好處是PUT
冪等性。
PUT
因此,如果您向端點(diǎn)發(fā)送請(qǐng)求/myTable
,則隱含的含義是您正在替換 ,并且同一端點(diǎn)上的myTable
后續(xù)請(qǐng)求將為您提供與剛剛發(fā)送的內(nèi)容在語(yǔ)義上相似的響應(yīng)。GET
如果我的上述任何假設(shè)是錯(cuò)誤的,您很可能會(huì)想要POST
,這更像是一種通用的包羅萬(wàn)象的方法,可以在較少的限制下進(jìn)行更改。POST
缺點(diǎn)是,我認(rèn)為在不檢查/理解主體的情況下,給定請(qǐng)求的操作不太明顯,并且您也會(huì)失去冪等性的好處。

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
目前我使用 POST 但我不知道這是否合適。
規(guī)則#1:如果您不確定,可以使用 POST。
POST 在 HTTP 中具有許多有用的用途,包括“此操作不值得標(biāo)準(zhǔn)化”的一般用途。
看來(lái)使用 PUT 也可以正常工作。
從某種意義上說(shuō),任何方法在源服務(wù)器上“都能正常工作”。HTTP 定義了請(qǐng)求語(yǔ)義——消息的含義。它不限制實(shí)施。
然而,通用客戶端會(huì)假設(shè)您的服務(wù)器理解 GET/HEAD/POST/PUT 等,就像其他 Web 服務(wù)器理解它們一樣。這是 REST 架構(gòu)風(fēng)格的強(qiáng)大功能的重要組成部分 - 任何符合標(biāo)準(zhǔn)的客戶端都可以與任何符合標(biāo)準(zhǔn)的服務(wù)器進(jìn)行通信,并且它可以正常工作。此外,如果我們?cè)谒鼈冎g插入任何符合標(biāo)準(zhǔn)的緩存/代理,它會(huì)繼續(xù)以完全相同的方式工作。
但是,如果您使用204 No Content響應(yīng)PUT請(qǐng)求,那么通用組件將理解這與任何其他服務(wù)器返回的含義相同。也就是說(shuō),如果你偏離標(biāo)準(zhǔn)而導(dǎo)致財(cái)產(chǎn)損失,你的服務(wù)員要承擔(dān)責(zé)任。

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以在這里查看答案以供參考。它們得到了很好的解釋。?REST 中的 PUT 與 POST
但由于兩者可以達(dá)到相同的目的,并且僅取決于您的偏好或要求,因此我通常使用 post 來(lái)創(chuàng)建資源并更新資源作為一種實(shí)踐。
添加回答
舉報(bào)