14

如何在Spring Data REST的资源根列表中公开外部资源(不通过存储库管理) ?我按照Restbucks中的模式定义了一个控制器

4

2 回答 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 回答