2011-04-12 81 views
0

在設計使用使用自動生成的ID的數據存儲的RESTful API(並且沒有任何可靠的唯一值)時,如何指定添加(PUT)操作?如何在RESTful API中處理自動生成的ID?

例如:

GET /widgets/ 

將返回所有小工具的列表。

GET /widgets/123 

會返回特定窗口小部件的信息。

POST /widgets/123 

會更新小部件。

但是,添加小部件的URL是什麼?

PUT /widgets/??? 

即,我(作爲客戶)在我添加它之前不知道ID。

回答

1

REST約定通常指定創建POST和更新PUT。這是因爲PUT與GET和DELETE是冪等方法。這意味着它們可以運行任意次數,並且服務器的狀態應該是相同的。儘管POST是一個非冪等動作,這意味着每次運行動作後,服務器狀態並不保證是相同的。

通常你會發布到/widgets網址來添加一個項目。

查看this瞭解更多詳情。

+0

啊okey dokey我有那些錯誤的方式。我確信我正在閱讀的文章說他們是相反的,但是有很多錯誤信息。 – stusmith 2011-04-12 15:29:52

+1

@stusmith:存在大量的錯誤信息,但是發給父代的POST是正確的(ID分配不是冪等的),它應該返回一個鏈接/重定向到剛創建的資源。 – 2011-04-12 15:46:13

+0

@stusmith您可以使用PUT或POST創建資源,PUT的限制是您需要知道將PUT放在哪裏,因此您需要事先知道ID。你也可以用PUT,POST或PATCH來更新資源,這取決於最有意義的東西,這就是爲什麼人們試圖將HTTP方法映射到CRUD的原因。 – 2011-04-12 23:14:33