0

customers/3私がリソースを持っているとき、顧客オブジェクトを返すとしましょう。このオブジェクトをさまざまなフィールドまたはその他の変更で返したいとしましょう (たとえば、顧客オブジェクトに彼の最新の購入も含める必要があるとしましょう (目的のために)スピード私は2つの異なるクエリをしたくない)))。

私が見ているように、私のオプションは次のとおりです。

  • customers/3/with-latest-purchase
  • customers/3?display=with-latest-purchase

最初のオプションでは、新しい表現のための個別の URI がありますが、これは本当に必要ですか? また、この URI が存在することをクライアントに伝えるにはどうすればよいですか?

2 番目のオプションには、返す表現の種類をサーバーに伝える GET パラメータがあります。URI パラメーターは OPTIONS メソッドを介して説明でき、すべての表現がすべて 1 か所にあるため、データを探す場所をクライアントに伝えるのが簡単になります。

だから私の質問は、これらのうちどれが優れているか(よりRESTful)、および/または私が知らないこれを行うためのより良い方法はありますか?

4

2 に答える 2

1

最適なのは、アトミックで分割できないサービス オブジェクトを定義することだと思います。たとえばcustomer、 and customer-latest-purchase、nice、clean、simple などです。次に、クライアントが最新の購入品を顧客に求めている場合、ファンキーなパラメーターですべてを 1 つに詰め込むのではなく、両方のサービス呼び出しを呼び出します。

オブジェクトのさまざまな表現は、インターフェイスを介して Java で問題ありませんが、REST の単純さを損なうため、REST にとっては悪い考えだと思います。

于 2013-01-14T14:47:32.217 に答える
0

クエリ パラメータをファイル パスのように見せる方が RESTful であるという誤解があります。アドレスのクエリ部分は、個別の URI を決定するときに含まれるため、2 番目のオプションで問題ありません。

すべての顧客の GET 要求に最新の購入データを含めると、パフォーマンスに大きな影響がありますか? そうでない場合、最も簡単な方法はそれを行うことで、奇妙な URL パラメータや二重のリクエストが発生しないようにすることです。最新の注文を取得することが非常に困難な場合 (おそらくそうあるべきではありません)、それを含めるためにクエリ文字列にフラグを追加しても問題はありません。

于 2013-01-14T16:07:39.297 に答える