Spring HAL链接目的地

时间:2016-06-22 08:38:00

标签: spring-boot spring-data-rest spring-hateoas

使用Spring Boot,我得到了具有其他实体作为字段的实体的意外链接。简明的例子:

@Entity Foo { ... }

interface FooRepository extends CrudRepository<Foo, Long> ...

@Entity Bar {
    @ManyToOne
    Foo foo;
    ...
}

interface BarRepository extends CrudRepository<Bar, Long> ...

在获取Bar实体时,响应包含以下链接:

{
  ...
  "_links": {
    "self": {
      "href": "http://localhost:9001/bars/1"
    },
    "bar": {
      "href": "http://localhost:9001/bars/1"
    },
    "foo": {
      "href": "http://localhost:9001/bars/1/foo"
    }
  }
}

对于“foo”链接,我原本希望将Foo实体的URI作为链接,即<host>/foo/<id>而不是<host>/bars/1/foo。两个链接都提供完全相同的响应。 HAL规范中的示例显示了预期的行为,我也发现它更有用,例如,如果我想在客户端进行缓存。对同一资源使用不同的URI似乎没有帮助。

这种行为背后的原因是什么?有人能指出我的相关文档吗?

0 个答案:

没有答案