我正在研究基于 REST 的 API,并且在弄清楚代表父/子关系的规范方法时遇到了一些麻烦。(我在CXF中编写bean,使用JAX-RS和JAXB。我从CXF提供的基本示例开始)
我的问题是假设你有一个 Foo 和一个 Bar。Foo 和 Bar 存在 1-N 关系,即 1 Foo 有许多 Bars。我的问题是,找出 Bars a Foo 有什么的规范方法是什么?访问 Foo 拥有的 Bar 资源的规范方法是什么?
我发现例如我可能会在以下位置列出 Foos:
并在单个 foo 上操作:
放置/更新/删除http://xxx/fooservice/foo/ {fooid}
但是我如何列出 Foo 121 的 Bars 呢?我如何访问它们?我注意到默认的 JAXB 编组器似乎不输出集合只是 bean 的属性,所以如果 Foo 是:
富 - 字符串 ID - 字符串名称 - 收藏酒吧
JAXB 输出如下内容:
<foo><id>123>/id><name>foo name</name></foo> <--注意没有bars属性
这是有问题的,因为无法合理地期望客户知道 Foo 有 Bars,除非它“只知道”(这对我来说似乎很糟糕)。因此,虽然我可以想象使用以下方法获取条形列表:
获取http://xxx/fooservice/foo/121/bars
如果实体的输出没有说明,客户如何知道 Foo 有 Bars?现在假设客户端确实获得了列表,那么实体操作似乎类似于:
获取/删除/更新http://xxx/fooservice/foo/121/bar/435
这将访问 Foo 121 拥有的 Bar 435。