REST映射到子资源

时间:2015-12-03 14:34:14

标签: java rest model-view-controller

我在理解为对象和子对象应用REST模式的完美方法时遇到了一些麻烦。 让我们考虑以下课程:

class Foo {
    Long id;
    Bar bar;
}

class Bar {
    Long id;
    String name;
}

据我所知,在简单的情况下,我们有:

  1. Foo个对象列表 - .../foos
  2. 一个Foo个对象 - .../foos/{id}
  3. 现在我无法理解访问子对象的工作原理。如果我想获取Foo个对象Bar对象name == baz

    ,那么该怎么做是正确的

    这是.../foos/bar/name/baz还是/foos?barName=baz

    我应该使用哪个映射来从Bar中的参数name获取Foo个对象?这会是.../foos/bar/{name}还是会有所不同?

1 个答案:

答案 0 :(得分:3)

主要问题是:您要求哪种资源?在您的情况下,您需要一个foos列表,因此URI将为/foos,句点。必须以其他方式设置剩余约束。

然后,您希望过滤返回的列表,以便仅检索具有特定foos的{​​{1}}。这可以通过参数bar完成。

以下是一些常见网址:

  1. /foos?barName=someName:列出所有GET /foos
  2. foos:获取具体的GET /foos/{id}
  3. foo:列出所有GET /bars
  4. bars:获取具体的GET /bars/{id}
  5. bar:获取特定GET /foos/{id}/bars
  6. 的所有bars
  7. foo:获取特定GET /foos/{id}/bars/{id}的具体bar(与foo相同但限制性更强)