2012-05-30 63 views
0

所有功能,這是錯誤的使用POST在REST的一切嗎?我知道POST是用於更新和創建的,但是如果我將它用於SELECTS和DELETS呢?我基本需要的是一個可以對數據庫執行CRUD操作的Web服務。我使用PHP。另外,如果我使用查詢字符串來執行POST請求而不是使用JSON或XML,該怎麼辦?使用POST在REST協議

+0

你爲什麼不*使用適當的HTTP動詞? – deceze

+0

我只是問是否錯誤。 – Indy

+0

Facebook使用GET進行所有功能。這也包括刪除/更新。 – OptimusCrime

回答

0

如果您在使用POST的所有操作,你真的不能稱之爲REST了。

因此,這沒有錯,但它沒有其他的不是:)

0

這是錯誤的使用POST在REST的一切嗎?

不能使用POST在REST一切(例如,僅用於請求,沒有響應),所以關於對或錯的問題不是一個有效的問題。

我知道POST是用於更新和創建,但如果我將它用於SELECTS和DELETS呢?

它通常只是工作。

我基本需要的是一個Web服務,可以對數據庫執行CRUD操作。

這很好。

使用PHP的進出口。

也沒關係。 PHP已經支持HEAD,GET和POST方法。對於PUT和DELETE方法,你需要做更多的編碼。

另外,如果我使用查詢字符串來執行POST請求而不是使用JSON或XML,該怎麼辦?

您使用查詢字符串而不是JSON/XML請求主體。 REST沒有指定協議,所以你可以隨心所欲地做任何事情。使用「查詢字符串」可能是PHP的一個好主意,因爲PHP支持開箱即用。但這取決於您用於處理程序的內容或您想要支持的內容。

由於您的問題非常廣泛,因此您可能需要先閱讀REST的一些基本說明,以便更明確地詢問:A Brief Introduction to REST

0

是的,這是錯誤的。如果您使用POST進行除更新之外的其他任何操作,則實際上並不遵循REST約定。

0

你可以吃用叉子但爲什麼湯嗎?無論如何,你可以使用任何方法,只是不要稱之爲REST協議。

0

是錯誤的使用POST對於那些意味着要重複呼叫。

POST調用不會被緩存而是讓你不應該使用POST他們的選擇調用應該是緩存能夠(和重複)。

但是沒有任何技術上的理由說明,爲什麼你不能通過POST強制所有的東西(特別是DELETE在所有的瀏覽器中都不支持),但是這確實意味着緩存對你的任何調用都不起作用,如果POST調用已經創建,用戶可能無法刷新網頁而不會被要求確認頁面重新加載。

0

在這個REST教程here系列中的第4條說:

對於創建,更新和刪除數據,使用POST請求。 (POST也可用於只讀查詢,如上所述,當需要複雜的參數註明。)

當然得到通常用於只讀查詢,因此把他們放在一起,如果複雜性是默認的假設,當在複雜性和簡單性之間沒有界限時,這是一種方便的假設,那麼這個足夠權限在REST上編寫整個系列的人會說,發佈一切都是可以的。緩存可能會對各種HTTP動詞的反應做出一些假設,這可能是有益的,但是如果您的應用程序沒有從緩存中受益(實際上,可能會因此受到傷害,所以禁用它或執行某些操作以免應用程序不受其影響),然後我不知道是否有任何問題。