我在理解将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}
还是其他? 最佳答案
主要问题是:您要请求哪种资源?对于您的情况,您需要一个foos
列表,因此URI将为/foos
句点。其余约束必须以其他方式设置。
然后,您要筛选返回的列表,以便仅检索具有特定foos
的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
(与GET /bars/{id}
相同,但限制性更强)
关于java - REST到子资源的映射,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34068679/