其他分享
首页 > 其他分享> > 扩展Spring Data Rest索引资源链接

扩展Spring Data Rest索引资源链接

作者:互联网

我将所有api端点映射到基本url / api /下.现在,我希望通过HATEOAS使用spring-data-rest来公开所有可用的端点,以便客户端应用程序可以处理这些信息.默认情况下,这似乎开箱即用,因为GET / api /返回所有找到的Spring存储库及其各自的url,如下所示:

{
  "_links" : {
    "news" : {
      "href" : "http://localhost:8080/api/news{?page,size,sort,projection}",
      "templated" : true
    }
  }
}

但是,我想添加一些自定义链接到其他资源.我试过这个:

@RequestMapping("/api")
public class AppController {

  @RequestMapping("/")
  public ResponseEntity<ResourceSupport> getEndpoints () {
      ResourceSupport resource = new ResourceSupport();

      resource.add(linkTo(UserController.class).withRel("users"));

      return new ResponseEntity<>(resource, HttpStatus.OK);
  }
}

但这实际上会覆盖一切.所以我的问题是如何使用一些自定义链接扩展基本资源的spring-data-rest的标准输出?

解决方法:

我假设您正在使用spring-data-rest.

要添加指向服务索引资源的链接,您必须编写ResourceProcessor< RepositoryLinksResource>

生成索引资源时将调用此处理器,您可以使用它来添加指向索引资源的链接.

这是一个例子:

/**
 * Adds custom controller links to the index resource
 */
@Component
public class RepositoryLinksResourceProcessor implements ResourceProcessor<RepositoryLinksResource> {

    @Override
    public RepositoryLinksResource process(RepositoryLinksResource resource) {
        resource.add(linkTo(UserController.class).withRel("users"));
        return resource;
    }
}

标签:spring,spring-data-rest,spring-hateoas
来源: https://codeday.me/bug/20190828/1753904.html