2017-03-20 27 views
1

如果我必須使用不涉及我和應用程序之間的數據流的服務,那麼最適合的呼叫類型是什麼? (GET vs POST vs PATCH vs PUT)我試圖調用的服務?REST服務類型是否涉及數據流?

但是,後端將對數據存儲中的後端數據執行一些修改,並將其發送到另一個後端。然而,這並不是我在調用服務時所看到的抽象層次。我只想要完成「過程」以及後端服務如何做並不重要。

在這種情況下,我如何表示我試圖消費的「服務」。 這是一個「GET」服務,因爲我正在完成一項服務?這一切都非常混亂,因爲這些動詞都是以數據爲中心的,而不是以流程爲中心的。

回答

0

由於您的服務器在後端的數據上做了一些處理,我認爲您應該使用PATCH,並且該服務應返回代碼204 No Content

這很清楚,您需要使用PUTPATCH。但有什麼區別?

PUT和PATCH請求之間的差異反映在服務器處理封閉實體以修改由Request-URI標識的資源的方式中。在PUT請求中,封閉的實體被認爲是存儲在源服務器上的資源的修改版本,並且客戶端正在請求替換存儲的版本。

但是,使用PATCH時,封閉的實體包含一組說明,說明當前駐留在源服務器上的資源應如何修改以生成新版本。 PATCH方法影響由Request-URI標識的資源,並且它也可能對其他資源產生副作用;即可以通過應用PATCH創建新的資源,或者修改現有的資源。

所以這就是爲什麼我認爲PATCH會更適合您的情況。

+0

Thanks @Dave Ranjan。這與我們的理解是同步的。我接受你的答案。 – Ace

+0

Thankyou @GoldenSugar :) –

0

REST-方法在這裏的含義非常明確,不依賴於你發送它的地方以及發生了什麼。

得到的東西 - 要求一些數據。 POST用於創建數據,PUT用於處理現有數據。

如果你真的不知道後端涉及什麼,我寧願PUT,因爲這對我來說聽起來最抽象。

看到這裏的定義是:

http://www.restapitutorial.com/lessons/httpmethods.html

+0

PUT也用於創建數據。通常,只有在創建新資源時才應使用POST,但不希望允許客戶端確定新的URI。如果你可以使用PUT創建,那更好,因爲它是冪等的。該網站是可怕的。 – Evert

+0

感謝downvoting比,希望你玩得開心 –

+0

嘿Henning。我希望你不要以爲我想要變得卑鄙。對於我認爲不正確的ansers,我使用downvote按鈕。這是個不好的建議,所以我就低估了。我希望你能理解,我很欣賞你爲回答問題和做一些研究所做的努力。 – Evert

0

既然你調用一個過程,而不是真正transfering以任何方式資源的狀態,我覺得你根本不處理一個REST服務。

鑑於這種情況,我認爲最合適的HTTP方法只是POSTPATCH是錯誤的,因爲PATCH您應該發送一條消息,旨在操縱位於目標URI上的資源。正如你所說,你真的在​​處理這個過程,這意味着:

  1. 這個URI真的不是那麼有意義。
  2. 你不是在操縱資源。
  3. 你不能保證冪等性。

下面是從HTTP規範一些片段,涉及到這樣的:

POST方法請求的是目標資源過程中 表示根據所述資源的 自己特定語義括在所述請求。例如,POST被用於以下 功能(除了別的以外):

o指明數據塊,諸如字段中輸入到一個HTML 形式,在數據處理過程;