【发布时间】: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