您可以製作有效的HTTP請求,但違背HTTP的設計。我正在關注正確的HTTP設計。
首先,當您執行GET請求時,您始終會收到資源的表示形式。即使URL表示類似「資源集合」的東西,HTTP中也沒有嚴格的定義。該資源列表仍然可以代表來自您的數據模型的多個「實體」。
因此,致電/users
可以返回多個用戶實體。
同樣,對用戶的DELETE
可能表示您將刪除整個/users
集合及其中的所有內容。
我看到的一個問題,並沒有一個很好的答案是您正在使用查詢字符串來刪除多個資源。我認爲這是好的GET
/HEAD
,但我質疑它是否正確DELETE
以及。這對我來說肯定感覺有點「奇怪」,因爲我覺得DELETE
/users?foo=bar
應該刪除/users
,並且通常會由於大多數框架的工作原因。應該是?我其實不確定。 REST並不是嚴格的標準,所以我們無法去那裏找到答案,所以我得到的只是它感覺錯了。我意識到你並不嚴格要求REST,所以從嚴格的HTTP角度來看,它絕對沒問題。
但是,你可以組織你的網址並非像:
/users?id[]=12&id[]=4&id[]=65
,而是這樣的事情:
/users/12,4,65
我看到別人這樣做,而且感覺有點少對我錯了。但這主要是猜測。
不管如果你對這樣的多個實體做DELETE
,請求應該成功或者什麼也不做。不接受部分成功,所以您可以使用通常的200/204響應代碼來表示成功刪除。
您的請求將如何知道返回哪種類型的響應,以及爲什麼要這樣做? –
好吧,很明顯,要使用單個調用返回多個實體。 – cottton