2017-03-20 3 views
1

私とアプリケーションの間のデータフローに関係しないサービスを使用する必要がある場合、使用する最も適切なコールタイプは何ですか? (GET対POST対PATCH対PUT)私が呼び出しようとしているサービス?データフローが関与していない場合のRESTサービスタイプ?

しかし、バックエンドはデータストア内のバックエンドデータにいくつかの変更を加え、それを別のバックエンドにPOSTします。しかし、これは抽象化のレベルではなく、私が私のサービスを呼び出すときに見ます。私はちょうど "プロセス"が完了し、バックエンドサービスがそれが重要ではない方法をしたい。

ここでは、私が消費しようとしている「サービス」をどのように表しますか。 私はサービスを完了しているので、それは "GET"サービスですか?これらの動詞はすべてデータ中心であり、プロセス中心ではないので、これはすべて非常に混乱します。

答えて

0

サーバーはバックエンドのデータで何らかの操作を行うため、PATCHを使用し、サービスはコード204 No Contentを返します。

PUTまたはPATCHのいずれかを使用する必要があります。しかし、違いは何ですか?

PUT要求とPATCH要求の違いは、サーバーが、要求URIによって識別されるリソースを変更するために、囲まれたエンティティを処理する方法に反映されます。 PUT要求では、囲まれたエンティティは元のサーバーに格納されているリソースの修正バージョンと見なされ、クライアントは保存されたバージョンの置き換えを要求しています。

ただし、PATCHの場合、囲まれたエンティティには、元のサーバーに現在存在するリソースを変更して新しいバージョンを作成する方法を説明する一連の指示が含まれています。 PATCHメソッドは、Request-URIによって識別されるリソースに影響を及ぼし、他のリソースにも副作用をもたらす可能性があります。すなわち、PATCHのアプリケーションによって新しいリソースが作成されるか、または既存のリソースが変更される。

だから私はPATCHがあなたのケースにもっと適していると思います。

+0

ありがとう@Dave Ranjan。これはわれわれの理解とは独立している。私はあなたの答えを受け入れる。 – Ace

+0

ありがとう@GoldenSugar :) –

0

REST-メソッドは、そこに何が起こっているのかに依存せず、意味が非常に明確です。

いくつかのデータを求めています。 POSTはデータを作成するためのもので、PUTは既存のデータを操作するためのものです。

バックエンドで何が関わっているのか分かりませんでしたが、私にとってはこれが最も抽象的に聞こえるので、PUTが好きです。

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

+0

PUTはデータを作成するためのものです。 POSTは通常、新しいリソースを作成する場合にのみ使用しますが、クライアントが新しいURIを決定することを許可したくない場合に使用します。作成のためにPUTを使用することができれば、それは冪等の理由からより良いでしょう。そのウェブサイトはひどいです。 – Evert

+0

downvotingありがとう、ありがとうございました。 –

+0

Hey Henning。私はあなたが意味を成し遂げようとしていたとは思わないと思います。私は間違っていると感じるansersのためにdownvoteボタンを使用します。それは悪いアドバイスなので、私はdownvoted理由です。質問に答えて研究をしてくれたことに感謝します。 – Evert

0

あなたがプロセスを起動し、実際にどのような方法でリソースの状態を転送していないので、私はあなたが単純にRESTサービスを扱っていないと思う:

は、ここに定義を参照してください。

この場合、最も適切なHTTPメソッドは、単にPOSTです。 PATCHは、PATCHの場合、ターゲットURI上に存在するリソースを操作するためのメッセージを送信することになっているため、間違っています。あなたが言ったように、あなたは実際にここにあるプロセスを扱っています。つまり、以下を意味します。

  1. 本当に意味のあるものではありません。
  2. あなたはリソースを操作していません。
  3. 冪等の保証はできません。ここ

これに関連するHTTP仕様から一部抜粋である:

ターゲットリソース処理POSTメソッド要求リソースの 固有のセマンティクスに従って要求で囲ま 表現。たとえば、POSTは、次のような 機能(特に)のために使用されます。

o HTML フォームに入力されたフィールドなどのデータブロックをデータ処理プロセスに提供します。

関連する問題