8

単純な作成 (POST)、読み取り (GET)、更新 (PUT)、および削除 (DELETE) 以外の REST でアクションを実行することは適切ですか? 私はRESTfulの神学全体に少し慣れていないので、我慢してください。ただし、次のことをどのように達成すればよいですか。

  • 別の Web サービスと対話する必要がある Web サービスがあります。Web サービス A は Web サービス B でオブジェクトを「予約」する必要があります。このオブジェクトには有効期限がありますが、必要に応じてすぐに削除できます。これは基本的に、何らかのアクションを実行する前に、Web サービスが Web サービス B にスペースを予約することを要求する美化された許可システムです。

私の最初の考えは、1.何らかの認証を有効にする、2.GET呼び出しに対するサーバー側の応答で、スペースを予約して結果を返す、3.DELETE呼び出しを介してオブジェクトの即時の「予約解除」を提供することでした。これはまだRESTfulですか?

4

3 に答える 3

3

はい、休んでアクションを実行しても問題ありません。重要なのは、これらのアクションは、交換する表現によって導かれる必要があるということです。

Web が (ブラウザーを介して) 機能する方法について考えてみると、これは常に行われていることです。実行できるアクションの数を選択できる HTML フォームが表示されます。次に、(通常は を介し​​て) フォームを送信するPOSTと、アクションが実行されます。

DELETEプログラムによるクライアント (ブラウザでの非 AJAX リクエストではサポートされないもの) を介して使用できるのは良いことですが、RESTful システムの全体的なアプローチは、Web サイトで見られるものと非常に似ている必要があります (つまり、フォーカスシステム内の Web ページに相当する表現上にある必要があります)。

GET副作用があってはならないのでGET、予約そのものには使用せず、POST代わりに次のようなものを使用してください。

于 2011-07-13T22:07:17.790 に答える
2

いいえ - 落ち着く可能性は低い

あなたの説明から...

2. GET 呼び出しに対するサーバー側の応答で、スペースを予約して結果を返す

GET は冪等でなければなりません。この理由だけでも、最初の GET 後のシステムの状態が異なるため、サービスが安定している可能性は低くなります。

Reservation はリソースであり、HTTP 応答の Location ヘッダーで新しいリソースの URI を返す Reservation コンテナーへの POST を使用して作成する必要があることを考慮する必要があります。この UrI を Get で使用してリソースを返し、PUT で更新できます。

Post は既存のリソースを拡張するために使用し、Put はリソースの状態を置き換えるために使用する必要があります。あなたのケースでは、投稿が予約のリストを更新し、新しいリソースの URI を返していると考えてください (I'd だけではありません)。Put は、UR によって識別されるリソースに関連付けられた状態を変更するために使用できます。

于 2011-07-13T22:15:18.907 に答える
0

あなたは正しい道を進んでいますが、オブジェクトの予約は PUT で行う必要があります。オブジェクトに予約を入れています。つまり、基になるオブジェクトを変更しています。

ここでは PUT が適切な動詞です。なぜなら、変更しているリソースがわかっているためであり、複数の要求に対して冪等でなければなりません。

于 2011-07-13T22:08:29.290 に答える