10

画像を表すリソースがあるとしましょう

PUT /images/[id] with path -> 既に存在する場合は新しい画像リソースを作成してリソースを更新します

POST /images/[id] -> リソースの変更または更新 例、イメージ名

DELETE /images/[id] -> これによりリソースが削除されます

GET /images/[id] -> 画像の詳細を取得します

今、実際の質問。画像に追加のアクションを追加する必要がある場合はどうすればよいですか?. 画像リソースが赤目軽減アクションまたはトリミング、サイズ変更などのその他のアクションに応答するとします。

では、これらのアクションはどのように考慮され、安静なインターフェイスでどのように呼び出されるのでしょうか?

/images/[id]/remove_redeye

/images/[id]/crop

/images/[id]/サイズ変更

上記の呼び出しは安静なインターフェイスで有効ですか? これらのアクションをどのように考慮すべきか (PUT POST) について混乱していますか?

4

2 に答える 2

6

「赤目除去」、「クロップ」、「サイズ変更」はすべて、「リソースを変更または更新する」アクションのように聞こえます。それらは PUT アクションに属します。(質問で PUT と POST を混同したと思います。 w3c にリストされている動詞を参照してください。)

アクションの性質をどのように伝えるかは、何が POST されるかによって異なります。たとえば、データベース レコードの上にあるフォームについて話している場合、POST は単にそのレコードのデータになります。オブジェクト全体が新しい状態で POST されるため、変更されるフィールドを指定する必要はありません。

この場合、オブジェクト全体が新しい状態で POST されていますか? それとも、オブジェクトはサーバー側でのみ存在し、インターフェイスは何らかのアクションのリクエストを送信しているだけですか? 提供された情報に基づいて、私には後者のように思えます。

その場合、アクションに関する追加情報を POST に含めることができます。POST では、データにキーと値のペアが含まれている場合、より大きく複雑な POST 本文が含まれている場合があることに注意してください。このボディには XML を含めることができます。たとえば、サーバーがリクエストの処理に使用するより多くの情報を指定します。多分このようなもの:

<image id="123">
    <resize>
        <width>200</width>
        <height>200</height>
    </resize>
</image>

これにより、同じリクエスト内で複数のアクションを許可することもでき、ユーザーはサーバー側の単一の作業単位ですべてをコミットする前に、クライアント側でさまざまなことを試すことができます。もちろん、それをどのように処理するか、またはこの場合に適用できるかどうかは、あなた次第です。

于 2012-05-22T22:49:07.763 に答える
1

PUT /images/[id] は、新しいリソースを追加するか、既存のリソースを完全に置き換えることを意味します。

POST は、リソースの作成 (/images) または変更 (/images/[id]) を意味します。リソースを作成すると、サーバーがそのリソースを返す場合があります。

同じリソース (POST) に対するいくつかの変更アクションでは、カスタム ヘッダーを使用して変更の種類を定義する傾向があります。この場合、リソース

/images/[id]/remove_redeye
/images/[id]/crop
/images/[id]/resize

翻訳すると:

POST /images/[id] HTTP/1.1
X-RESTAction [remove_redeye|crop|resize]
于 2012-06-13T21:44:12.890 に答える