我在理解为对象和子对象应用REST模式的完美方法时遇到了一些麻烦。 让我们考虑以下课程:
class Foo {
Long id;
Bar bar;
}
class Bar {
Long id;
String name;
}
据我所知,在简单的情况下,我们有:
Foo
个对象列表 - .../foos
Foo
个对象 - .../foos/{id}
现在我无法理解访问子对象的工作原理。如果我想获取Foo
个对象Bar
对象name == baz
这是.../foos/bar/name/baz
还是/foos?barName=baz
?
我应该使用哪个映射来从Bar
中的参数name
获取Foo
个对象?这会是.../foos/bar/{name}
还是会有所不同?
答案 0 :(得分:3)
主要问题是:您要求哪种资源?在您的情况下,您需要一个foos
列表,因此URI将为/foos
,句点。必须以其他方式设置剩余约束。
然后,您希望过滤返回的列表,以便仅检索具有特定foos
的{{1}}。这可以通过参数bar
完成。
以下是一些常见网址:
/foos?barName=someName
:列出所有GET /foos
foos
:获取具体的GET /foos/{id}
foo
:列出所有GET /bars
bars
:获取具体的GET /bars/{id}
bar
:获取特定GET /foos/{id}/bars
bars
foo
:获取特定GET /foos/{id}/bars/{id}
的具体bar
(与foo
相同但限制性更强)