2013-07-25 139 views
7

我正在閱讀一本關於web服務的Javascript書籍,但我發現很難將以下語句理解爲使用REST(具象狀態轉移)的缺點。REST web服務的主要缺點

一個最大的缺點,使用REST的是,一些瀏覽器 只支持GET和POST方法,而許多防火牆允許的只有GET和POST方法 通道。

我真的不明白這是如何被視爲缺點。 英語不是我的第一語言,所以它可能只是我發現它很難。

有人可以詳細說明這一點嗎?

+2

這寫的很差。並不是GET和POST都是所有REST服務的缺點;這就是說,如果REST服務使用除GET和POST之外的其他方法,那麼它可能會因瀏覽器對這些其他方法的支持不佳而受到影響。 –

+0

我同意。你的解釋比我書中寫的更容易理解.. –

回答

4

REST支持PUT和DELETE方法以及GET和POST - 因此,如果您的應用應該在瀏覽器中運行,那麼您將受到限制。

的約定是使用GET來檢索信息,POST來創建新的對象/實體,PUT更新現有的對象/實體和DELETE刪除...

+0

Downvoter - 關注評論? – alfasin

1

這是一個缺點,如果你的應用程序依賴於DELETE或PUT請求,並非每個客戶端或網絡配置都會支持這一點,這意味着將有可能無法部署它的情況(沒有解決方法)。

雖然我不確定這是否仍然是一個真正的問題,並且通過對不能發出適當的DELETE或PUT的客戶端進行一些過濾器重寫請求很容易解決。

1

那麼REST Web服務使用HTTP請求方法:POST,GET,DELETE,PUT。 所以這意味着不支持PUT和DELETE HTTP請求方法。這是一個退步,但有辦法通過操縱DTO來繞過它。但是這意味着你不會遵循完整的REST方法。

2

Restful Web服務通常使用Http規範中定義的許多方法。所以,Create方法使用Http Post,Read方法使用Http Get,Update方法使用Http Put,Delete方法使用Http Delete。請參閱http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.htmlWhich HTTP methods match up to which CRUD methods?

書中提出的問題是Put和Delete可能無法通過防火牆或某些瀏覽器使用。我不知道這是否是一個有效的問題。我認爲今天的互聯網基礎設施很好地處理了這個問題。

上面提到的CRUD方法堆棧溢出的物品包括一個有幫助的註釋:

而且,由於PUT和DELETE尚未通過Web瀏覽器支持,這是 認爲沒關係「過載POST」通過添加查詢字符串參數 類似的方法= PUT或方法=刪除的URI被張貼