如何在Spring Data Rest中添加没有任何实体的资源链接

时间:2015-04-10 11:54:16

标签: spring-data-rest spring-hateoas

我有一个非常松散的对联系统,可以获取任何json有效负载并保存在mongo集合中。

没有实体可以作为资源公开,但只有控制器端点公开 例如

 @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Map<String, Object>> publish(@RequestBody Map<String, Object> jsonBody) {
.. save the body in mongo
....}

我仍然希望构建一个超媒体驱动的应用程序。带有导航和分页的链接。

其控制器实现ResourceProcessor

public class PublicationController implements ResourceProcessor<RepositoryLinksResource> {
....
 @Override
public RepositoryLinksResource process(RepositoryLinksResource resource) {
    resource.add(linkTo(methodOn(PublicationController.class).getPublications()).withRel("publications"));
    return resource;
}

问题是处理器永远不会被调用? 将@EnableWebMvc放在配置类上可以解决它(处理器被调用),但首先这不应该是必需的,并且辅助HAL链接的格式似乎已经破坏

例如。将formattet作为列表

links: [
{
"links":[
    {
        "rel":"self",
        "href":"http://localhost:8080/api/publications/121212"
    },
    {
        "rel":"findByStartTimeBetween",
        "href":"http://localhost:8080/api/publications/search/findStartTimeBetween?timeStart=2015-04-10T13:44:56.437&timeEnd=2015-04-10T13:44:56.439"
    }
]

}

是否有@enableWebMvc的替代品,以便处理器被调用?

目前我正在运行Spring boot v.1.2.3

1 个答案:

答案 0 :(得分:0)

事实证明答案很简单。 问题是我有静态内容(resources / static / index.html) 这将抑制来自根的超媒体链接。 移动静态内容使一切都运行得很好。