2011-03-02 40 views
0

我設計一個RESTful Web服務,並有我預見將是一個普遍的問題。 比方說你有一個資源網址:POST/PUT與返回的結構不同的結構可以嗎?

/用戶

對於那個URL返回與基本資料的用戶列表的GET操作。

現在我想爲用戶創建一個POST操作,但爲了創造我需要通過比由/用戶和任何特定用戶的URL(用戶/ 1等)返回更多信息的用戶。這個可以嗎?這種情況下常用的方法是什麼?

回答

2

我認爲,理想的是,所有張貼在創建資源的表示是一樣的,當你得到相同的資源時,返回的表示。然而,與所有事情一樣,這不是一條硬性規定。例如,如果你有一個用戶的屬性,比如他們的「信譽」,那麼很明顯,這將在GET上返回,但在創建POST時不需要。無法想象任何您需要在創建時提供的屬性,您不會在GET上報告。你可能會發現你需要不同的表示,這取決於誰在請求。也許有私人信息只有在所有者請求時纔會返回,這是在創建時必須在POST上提供的信息,但是當另一個用戶請求資源時,他們不會獲得該信息。我不認爲這會引起你菲爾丁的憤怒。

編輯:爲了解決密碼(沒想到這些的,謝謝),那麼我不認爲這將是一個犯罪接受關於創造,而不是返回上GET。如果在GET表示中返回某種類型的密碼佔位符可能會很安靜,以便客戶端可以通過填寫密碼併發回相同的表示來更改密碼。

+0

「不能認爲副手的任何屬性,你會需要提供創作,你會不會從此以後GET報告。」 - 密碼字段? :) – bdonlan 2011-03-02 08:47:38

+0

沒錯,對於一個 – 2011-03-02 08:50:36

+0

確定這樣一個密碼,密碼字段,假設你提供它的創作。如果你提供用戶名和密碼,那麼你可能會使用PUT到/ users/username而不是POST到/ users,並獲得一個自動分配的用戶名。 – 2011-03-02 09:03:22