如何在Spring Data REST的 root资源列表中公开外部资源(不通过存储库管理)?我按照Restbucks
中的模式定义了一个控制器答案 0 :(得分:19)
这可以通过实施ResourceProcessor<RepositoryLinksResource>
来完成。
以下代码段将“/ others”添加到根列表
@Controller
@ExposesResourceFor(Other.class)
@RequestMapping("/others")
public class CustomRootController implements
ResourceProcessor<RepositoryLinksResource> {
@ResponseBody
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<Resources<Resource<Other>>> listEntities(
Pageable pageable) throws ResourceNotFoundException {
//... do what needs to be done
}
@Override
public RepositoryLinksResource process(RepositoryLinksResource resource) {
resource.add(ControllerLinkBuilder.linkTo(CustomRootController.class).withRel("others"));
return resource;
}
}
应该添加
{
"rel": "others",
"href": "http://localhost:8080/api/others"
}
到您的根列表链接
答案 1 :(得分:1)
我一直在寻找同一问题的答案,但关键是:我没有控制器。我的网址指向在auth过滤器中创建的内容。对我有用的是创建一个没有任何方法的RootController
,并使用它来构建ResourceProcessor
实现中的链接。
@RestController
@RequestMapping("/")
public class RootController {}
然后使用空控制器插入链接。
@Component
public class AuthLinkProcessor implements ResourceProcessor<RepositoryLinksResource> {
@Override
public RepositoryLinksResource process(RepositoryLinksResource resource) {
resource.add(
linkTo(RootController.class)
.slash("auth/login")
.withRel("auth-login"));
return resource;
}
}