我可以使用spring traveson HAL库跟踪链接,我想知道是否还有任何方法可以跟踪嵌入式链接。

例如,我可以使用someLink跟随traverson.follow("someLink"),但是我正在寻找一种跟随someResource self链接的方法。

{
  "name": "some name",
  "_embedded": {
    "someResource": [
      {
        "name": "some resource name",
        "_links": {
          "self": {
            "href": "http://someEmbeddedUrl"
          }
        }
      }
    ]
  },
  "_links": {
    "someLink": {
      "href": "http://someUrl"
    }
  }
}

最佳答案

我认为您可以使用PagedResources<Resource<SomeResource>>。看下面的示例(SomeResource是POJO):

Traverson.TraversalBuilder tb = traverson.follow("someLink");
ParameterizedTypeReference<PagedResources<Resource<SomeResource>>> typeRefDevices = new ParameterizedTypeReference<PagedResources<Resource<SomeResource>>>() {};
Resources<Resource<SomeResource>> resources = tb.toObject(typeRefDevices);
Resource<SomeResource> firstItem = resources.getContent().iterator().next();
firstItem.getLinks().forEach(l -> {
    System.out.println(String.format("rel: %s href: %s", l.getRel(), l.getHref()));
});


对于您的示例,此代码段应打印rel: self href: http://someEmbeddedUrl

10-06 15:48