2016-07-28 46 views
0

正如標題所說 - 它有效嗎?Http一次獲取並刪除多個實體請求(PHP)

做我的意思

如果我打電話與端點GET 是有效的,然後做

http://some.thing/more?id[]=12&id[]=4&id[]=65

讓服務器返回多個實體一次?

我在rfc文檔中看不到任何提示。另外 - 查看狀態代碼返回 - 它似乎不是這樣構建的。

所以我想只有一個實體的GET或DELETE或HEAD請求?

編輯:語言是PHP的BTW

EDIT2:這是我想避免:https://stackoverflow.com/a/18141127/3411766

我不想使用身體。

+0

您的請求將如何知道返回哪種類型的響應,以及爲什麼要這樣做? –

+0

好吧,很明顯,要使用單個調用返回多個實體。 – cottton

回答

1

您可以製作有效的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響應代碼來表示成功刪除。