私はRESTベースのAPIに取り組んでおり、親子関係を表すための標準的な方法を理解するのに問題があります。(私はCXFでBeanを作成し、JAX-RSとJAXBを使用しています。CXFが提供する基本的な例から始めました)
私の問題は、あなたがフーとバーを持っているとしましょう。FooとBarには1-Nの関係があります。つまり、1Fooには多くのBarがあります。私の質問は、Fooが持っているバーを見つけるための標準的な方法は何ですか?そして、Fooが所有するBarリソースにアクセスするための標準的な方法は何ですか?
たとえば、Foosを次の場所にリストする可能性があることがわかりました。
GET http:// xxx / fooservice / foos
そして、次の場所で単一のfooを操作します。
PUT / UPDATE / DELETE http:// xxx / fooservice / foo / {fooid}
しかし、Foo 121が持っているバーをリストするにはどうすればよいですか?そして、どうすればそれらにアクセスできますか?デフォルトのJAXBマーシャラーは、Beanの属性だけをコレクションに出力しないように見えることに気づきました。したがって、Fooが次の場合:
Foo -文字列ID -文字列名 -コレクションバー
JAXBは次のようなものを出力します。
<foo> <id> 123> / id> <name> foo name </ name> </foo><-bars属性がないことに注意してください
それが「ただ知っている」(私には悪いように思われる)場合を除いて、クライアントがFooにバーがあることを知ることを合理的に期待する方法がないため、これは問題があります。したがって、次を使用してバーのリストを取得することを想像できますが、
GET http:// xxx / fooservice / foo / 121 / bars
エンティティの出力がそれについて何も言わない場合、クライアントはどのようにしてFooにバーがあることを知るのですか?クライアントがリストを取得すると仮定すると、エンティティ操作は次のようになります。
GET / DELETE / UPDATE http:// xxx / fooservice / foo / 121 / bar / 435
Foo121が所有するBar435にアクセスします。