如何在Spring的资源根列表中公开外部资源(不是通过存储库进行管理)?我按照雷斯特巴克斯中的模式定义了一个控制器
发布于 2014-07-16 21:28:27
这可以通过实现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"
}
到根目录链接
发布于 2018-03-05 01:28:32
我一直在寻找同一个问题的答案,但关键是:我没有控制器。我的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;
}
}
发布于 2022-05-01 21:17:10
2022年,API发生了变化。这个答复可能是相关的:将ResourceProcessor迁移到HATEOAS 1.0.0 M1。
下面是我使用新API编写的代码:
@Component
class AuthLinkProcessor implements RepresentationModelProcessor<RepositoryLinksResource> {
@Override
public RepositoryLinksResource process(RepositoryLinksResource model) {
model.add(
linkTo(AuthenticationController.class)
.slash("/authenticate")
.withRel("authenticate"));
return model;
}
}
https://stackoverflow.com/questions/23135756
复制相似问题