0

これまで RESTful サービスを設計する必要がなかったので、URI ルートをマッピングしたいと考えています。

FooBarオブジェクトがあるとしましょう。AFooは複数Bars関連付けることがBarできますが、A はいずれからも独立させることができFoosます。明らかに、これらのタイプは両方とも独立して存在できるため、次のように独自の URI 階層が必要になります。

/Foos
/Bars

Barここで私の質問の出番です。 を作成し、それを に関連付けたいとしましょうFoo。これらの方法のうち、これを実装するための最良の方法はどれですか?

Bar方法 1: を作成してに関連付ける単一の API 呼び出しFoo

POST /Foos/{FooId}/Bars

方法 2: を作成するためのBar呼び出し、次に newBarをに関連付ける への呼び出しFoo。アソシエイト コールの正しいメソッドは PUT でしょうか。

POST /Bars
PUT /Foos/{FooId}/Bars/{BarId}

方法 3: まったく別のもの。

4

1 に答える 1

2

方法 2 の方がいいと思いますが、方法 1 を追加するのが良いかどうかを真剣に検討します。

私が方法 2 を気に入っているのは、独立した を作成し、必要に応じてそれを(または必要に応じて複数の )Barに関連付けることができるからです。FooFoo

ここで適用するいくつかの質問は次のとおりです。

  • に関連付けられるはずBarのが正常に作成され、それと正常に関連付けられていない場合は問題になりますか?FooFoo
  • Barを複数の に関連付けることはできますFooか?
  • は関連付けられてBarいるものについて何か知っていますか?Foo
  • Fooは複数持つことができますBarか?

a に関連付ける必要があるのに関連付けられていないフローティングBarがあることが本当に悪いことである場合は、方法 1 のようなものが必要になります (そうしないと、方法 2 の 1 回目と 2 回目の呼び出しの間に何かが発生する可能性があります)。Foo

私は作成する POST と変更する PUT の規則が好きです (したがって、あなたが提案するように方法 2 を実行します)。

URI の複数形を確認することもできます。私は単数形を好む傾向がありますが...ここで議論します-

REST URI 規則 - 作成中のリソースの単数形または複数形の名前

于 2013-10-22T05:50:32.857 に答える