2010-01-19 84 views
1

我已經完成了REST服務的基礎知識,在標準名單中實現了「標準」列表和GET/POST/PUT/DELETE動詞。通過REST接口公開數據庫查詢參數

但是,我正在使用的客戶端還希望擁有更強大的操作。我在後端使用Mongo DB,並且很容易暴露「更新」操作。 This page描述了Mongo如何做更新。

要編寫一個頁面需要一些JSON/XML /任何參數用於Mongo更新函數的「標準」和「objNew」部分。也許我做了一個像http://myserver.com/collection/update這樣的頁面,它接受一個POST(或PUT?)請求,幷包含一個包含該數據的請求主體。清除惡意查詢的輸入並加強安全性,我們就完成了。小菜一碟。

我的問題是:什麼是「RESTful」方式公開這種「最佳」方式?顯然,我上面描述的方法不是猶太潔食,因爲「更新」不是名詞。這種事情似乎更適合SOAP/RPC方法,但其餘的服務已經使用REST over HTTP,並且我不希望用戶必須進行兩種不同類型的調用。

想法?

回答

1

既然你已經知道這是不是一個很好的適合休息,你只是將不得不做你最好的,創造一個標準,使其工作。 Mongo的更新功能到目前爲止已從REST中刪除,我實際上允許集合上的PUT。忽略我的例子中的參數,我沒有想太多。

  • PUT收集組= {字段:值}
  • PUT收集彈出= {字段:1}?

或者:

  • PUT收集/彈出?字段= 1
2

通常情況下,我會處理這個問題爲:

  • 鏈接/收藏
  • 網址/收集/項目

  • GET集:返回集合資源的表示

  • GET collection/item:返回項目資源 的表示(內容類型的可選URI params:json,xml,txt等)

  • POST收集/:創建一個新的項目(如果通過XML,我使用XSD驗證)

  • PUT收集/項目:更新現有項目

  • 刪除集合/項:刪除現有項目

這有幫助嗎?

+1

不會是:「POST集合:創建一個新項目,重定向到集合/項目」 – Javier 2010-01-19 17:04:11

+0

是的,對不起,我更新。嘿嘿。接得好。 – 2010-01-19 17:09:11

+0

我已經設置了很多。但是,如果您檢查鏈接到的mongo文檔,該更新函數提供比上述REST設置更多的功能。我基本上想通過HTTP公開更新功能,我不確定最清楚/最好的方式來做到這一點。 – 2010-01-19 18:11:47