私は REST の原則を学んでいますが、複雑なリソースを操作することに疑問があります。
Foo と Bar という 2 つのリソースがあり、Foo ごとに Bar が必要だとします。API を使用する開発者に対して、 bar から foo への依存関係を明確にしたいので、次のようにします。
1) Foo インスタンスから Bar インスタンスへのリンクを使用します。
GET /foos/1
Foo: {
'name': 'Foo instance',
'rel_bar': '/foos/1/bar'
}
GET /foos/1/bar
Bar: {
'name': 'Bar instance',
'rel_foo': '/foos/1',
}
2) Foo から Bar への依存関係を示す URI テンプレートを使用します (REST では URI が不透明であるため、これは人間用です)。
/foos --> Foo resource collection
/foos/{foo_id} --> An instance of a Foo resource
/foos/{foo_id}/bar --> The bar instance associated to the foo instance foo_id
繰り返しになりますが、対応する foo のない bar はありません。
ここで、Foo リソースを作成したいと思います。
POST /foos
{
'name': 'Yet again another foo instance',
}
そして、サーバーに対応する Bar のデフォルト (または空の) リソースを作成させると、次の読み取りで次のようになります。
GET /foos/2
{
'name': 'Yet again another foo instance',
'rel_bar': '/foos/2/bar'
}
と...
GET /foos/2/bar
{
'name': null, --> Let's say that null is the default value.
'rel_foo': '/foos/2/bar'
}
これを行うのは「RESTfully正しい」ですか?私の懸念は次のとおりです。
- サーバーに関連リソースを自動的に作成させるのは正しいですか? または、Bar と Foo の作成を 2 つのステップに分割する必要がありますか?
- 表現 ('name' 属性のみ) を POST し、別のもの ('name' と割り当てられた 'rel_foo') を GET するのは正しいです。
私の個人的な考えでは、Bar は Foo なしでは意味がないので、おそらくそうです。サーバーに作成させるべきです。
何か案が?