2

クライアントがリソースをコピーできるようにする必要がある REST API を設計しています。たとえば、次のリソースがあるとします: customer/{customerno}/address

また、住所を配送先住所にコピーする機能をクライアントに提供します。次のようにできます: customer/{customerno}/address/copytoshipping

しかし、REST ではなく RPC になります。このようなことを行う正しい方法は何ですか?

4

3 に答える 3

2

それは REST API に含まれている必要がありますか? クライアントは、(請求先?) 住所の表現を GET して、それを配送先住所に PUT するだけで済みます。はい、クライアント側のコードでその詳細を隠すことはできますが (私には非常に合理的だと思われます)、コピーを行うための特別な操作で REST インターフェイスを乱雑にする特別な理由はありません。

于 2012-04-17T16:33:02.717 に答える
1

Rel="CustomerAddress" を使用してアドレスを取得します

Rel="CustomerShippingAddress" を使用した POST URL の例 customer/{customerno}/address/shipping

于 2012-04-17T14:02:04.973 に答える
1

別のアプローチは次のとおりです。

  • 「顧客の住所」のリソースを公開します(上記のとおり)

    GET /customer/{number}/address

  • 「顧客の配送先住所」フェッチ用のリソースを公開します。

    GET /customer/{number}/shipping-address

  • 実際の住所で更新:

    PUT /customer/{number}/shipping-address
    Content-Type: application/xml  
    (xml/json of a single address)
    
  • 別のアドレスへの URI ポインターを使用して更新する

    PUT /customer/number/shipping-address HTTP/1.1
    Content-Type: application/atom+xml
    (xml/json of an atom:link with href pointer to main address ('/customer/123/address')
    

おそらく必要以上に複雑ですが、クライアントではなくサーバーにコピーの負担がかかります。

于 2012-04-17T17:48:17.413 に答える