【问题标题】:How to add links to resources without any entities in Spring Data Rest如何在 Spring Data Rest 中添加没有任何实体的资源链接
【发布时间】:2015-04-10 11:54:16
【问题描述】:

我有一个非常松散的对联系统,它接收任何 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 链接的格式似乎损坏了

例如。获取格式为列表

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

【问题讨论】:

  • 您使用的是@Controller 注解,对吗?你能包括你在那个类上使用的注释吗?
  • 是的 - 我正在使用 @RestController 注释
  • 能够查看整个控制器类会很有帮助,尤其是 getPublications() 方法。
  • 当然 - 我会在我星期一回来工作时添加它。谢谢。

标签: spring-data-rest spring-hateoas


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-12-10
    • 2014-06-01
    • 2015-11-29
    • 2015-11-13
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 2015-03-14
    相关资源
    最近更新 更多