2012-07-03 55 views
9

接受批次PUT創建並返回多個位置的正確動詞和響應是什麼?位置標題只顯示支持一個單一的Uri。位置標題可以用於201創建的響應中的多個資源位置嗎?

我原本以爲我可以使用PUT進行批量創建,並返回一個帶有Uris列表的字符串數組,但在查看specification時,似乎並不支持,但它也不完全清楚。

是否允許多個位置標題作爲替代?

有什麼建議嗎?

回答

9

不,您可以只有一個位置標題字段(是的,從規範中可以清楚)。

這就是說,PUT用於創建/更新單個資源。看來,你使用它的東西,它不適合...

+0

感謝您解決這個問題。所以我們應該使用POST進行批量創建? – Junto

+0

Junto:是的,POST適用於「一切」:-) –

+2

是的,但問題仍然存在:在批處理創建情況下,如何返回所有單個資源位置?一個冗長的方法:將這些資源位置編譯成它們自己的資源*並將URL返回給*那個,但正如我所說的那樣,它有點冗長。 – StarTrekRedneck

5

PUT只能創建一個資源,因爲根據規格:

的PUT請求要求的狀態目標資源將被創建或替換爲包含在請求消息有效負載中的表示所定義的狀態。

http://tools.ietf.org/html/rfc7231#section-4.3.4

然而,可能的是用不同的動詞(如POST)的請求,以創建多個資源,並返回201個Created狀態。根據規範:

由請求創建的主要資源由響應中的位置標頭字段標識,或者如果沒有收到位置字段,則由有效請求URI標識。 201響應有效載荷通常描述並鏈接到創建的資源。

http://tools.ietf.org/html/rfc7231#section-6.3.2

因此,它是確定以返回多個創建的資源的URI的在201響應於,例如,POST請求,但Location頭可僅含有一個URI。

+1

確實如此,但您引用了過時的文檔。 –

+0

謝謝。現在修復(我希望)。 –

0

RFC 5988介紹鏈接HTTP頭。它可以用於這個目的。

相關問題