我正在開發一個我希望成爲RESTful的Web服務。我知道CRUD的做事方式,但我有幾件事情沒有完全明確。所以情況如下:RESTful - GET或POST - 怎麼辦?
我有一個跟蹤服務,收集瀏覽器(客戶端)中的一些數據,然後將其發送到跟蹤服務器。有兩種情況,一種是配置文件存在,另一種則不存在。最後,服務返回一些必須注入DOM的元素。
所以基本上我需要2個Web服務:
問題1: 現在我只是使用GET,但IM改寫服務器支持CRUD。所以在這種情況下,如果配置文件不存在,我必須使用POST。像http://mydomain.tld/profiles/之類的東西,然後POST負載有保存的信息。如果配置文件存在,我使用PUT和http://mydomain.tld/profiles/ /,並且PUT的有效載荷有數據要保存。所有的好,但問題是,據我瞭解,xmlhttp不支持PUT。即使使用POST更新,現在可以使用POST嗎?
問題2: 正如我說的,服務返回一些要注入到DOM中的元素,當創建一個軌道時。從邏輯上講,爲了保持RESTful,我想我將不得不使用POST/PUT來更新配置文件,然後GET來獲取要注入的元素。但爲了節省服務器端的帶寬和資源,使用POST/PUT將元素返回到配置文件更有意義,即使它是不同的資源。你對此有何看法?
BR /淑娜
編輯:
問題3: 在某些情況下,我只希望更新的姿態,並不會收到回元素。我是否仍然可以使用相同的資源,然後使用有效負載參數來指定我是否需要元素,例如「dont_receive_elements:true」
感謝您的回答。我會看看PUT部分。關於問題2 - 我的理解是,在REST世界中,每個資源都有其獨特的uri可供使用。在我的情況下,我想通過更新/創建一個資源並在同一個調用中將請求保存到服務器,實際上返回另一個資源。這可以接受嗎?我們返回的資源也可以通過它自己的URI進行操作。 – sunebrodersen 2012-07-13 07:40:05
試圖從你的API開發人員的角度來看,發佈到資源A然後取回資源B會有些出乎意料。而任何意想不到的情況都需要清晰地記錄下來,並且會代表一點點的學習障礙並使用你的API。所以,如果你會採取這種方法來節省自己的時間,那麼我不會這樣做。如果這是一個可能的性能問題,那麼我會一直等到它成爲一個真正的性能問題,因爲您的API的成功實際上是基於其他人學習和使用它的能力。希望這有助於,RB – 2012-07-13 15:46:44
請[不要添加簽名或標語到您的帖子](http://stackoverflow.com/faq#signatures)。 – meagar 2012-07-17 03:27:23