2012-07-09 32 views
2

我想要做的事更多REST這樣的:什麼是最符合某些要求的最新REST方式更新資源?

選擇資源,其field1等於foo,並更新field1bar

UPDATE XXX SET field1 = "bar" WHERE field1="foo" 

兩個解決方案,我可以看到:

  1. GET項目匹配我的要求,然後PUT來更新它們。也許用EtagIf-Match來保證它是原子的。
  2. 寫定製PUT方法處理程序,因此在查詢字符串代表WHERE子句中的SQL和PUT請求的內容表示在SQL
  3. SET子句

個人我更喜歡後者的解決方案,但在RESTPUT方法應該是一次覆蓋 * a *資源,而不是許多資源,也不只是更新資源的某些字段。

我也檢查了HTTP PATCH方法建議。它使得「更新資源的某些字段」成爲可能,但它也不能用於同時更新許多資源。

那麼你的解決方案是什麼?我想看看你的最佳實踐:-)

回答

1

隨機未經測試的想法:

url: PUT /xxx/*/field1/foo 
body: "bar" 

或者(如果你能預測/開往XXX鍵範圍):

PUT /xxx/0,9999999/field1/foo 
"bar" 

或如果你可以打2個電話,也許:

GET /xxx?field1="foo" 
POST /xxx/id1,id2,...,idn/field1 
"bar" 
相關問題