2017-08-02 6 views
1

{customer-name、customer-mobile、customer-email}を取得し、データベースに顧客を作成するAPIをお客様に提供しています。単一のPOST要求で複数のリソースが作成された場合、RESTfulと見なされますか?

{productId、customer-name、customer-mobile、customer-email}を使用するオーダーAPIもあります。

ためのAPIのためのコード:

  1. まず、{名前、携帯電話、電子メール}に基づいて、顧客が注文APIに渡され、得意先戻ら作成します。
  2. さらに、{productId、customerId}は注文テーブルのデータベースに保存されます。

1つのAPIが内部的に他のリソースを最初に作成しているという安心な習慣ですか?

APIがオーダーAPIで1つのタイプの商品のみを必要とする単純化された例です。

答えて

1

単一のPOST呼び出しで複数のリソースが作成されても問題ありません。 POSTメソッドは、の親リソースにある

  • (...に限定されるものではなく通常の法的免責事項を...)などがあります例の例 - それは一般的に最高のアイデアではありませんが、それは理にかなって使用する場合がありますすべて作成されたリソース。したがって、POST /accounts呼び出しによって、/accounts/<accountId>リソースが作成される可能性がありますが、/accounts/<accountId>/tweetsリソースも作成される可能性があります。この例では、/accounts/<accountId>の親は作成されている「実際の」リソースです。

  • POSTメソッドは、リソースがシステムの他の部分と相互作用する複数の方法を表す複数のリソースを作成することがあります。したがって、POST /accountsの応答は、/users/<accountId>の下にのリソースを作成する可能性があります(アカウントは、ユーザーIDとユーザーIDが引数のためのアカウントIDのスーパーセットであるためです)。しかし、クライアントは、実際にはのみが '/ accounts'パスの下にあるものについて(Locationヘッダー経由で)伝えられます。他の作成されたリソースは基本的に副作用です。

キーポイントは、実際に、POSTメソッドは、単一 Locationヘッダを返していること - 作成の主要 'リソースを表す - とそのURIにその後の「GETのは、他のリソースの位置を特定することが可能ですリンクを介して。

単一のPOSTリクエストで複数のリソースを作成すると、と異なるの値が返されなければならない場合は、リソースの内訳に問題があります。 'POST'は常にという1つのリソースの特定のタイプを作成することが明らかでなければなりません。ヘッダーに返されるURIです。他のリソースが副作用として作成される可能性があります。

関連する問題