如何在Spring Data REST的资源根列表中公开外部资源(不通过存储库管理) ?我按照Restbucks中的模式定义了一个控制器
问问题
7424 次
2 回答
23
这可以通过实施来完成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"
}
到您的根列表链接
于 2014-07-16T21:28:27.870 回答
2
我一直在寻找相同问题的答案,但关键是:我没有控制器。我的 url 指向在 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;
}
}
于 2018-03-05T01:28:32.973 回答