【发布时间】:2016-02-29 12:44:48
【问题描述】:
我有一个看起来像这样的控制器:
@RepositoryRestController
public class PersonOmnisearchController {
@Autowired
private PersonRepository personRepository;
@ResponseBody
@RequestMapping(value = "/persons/search/personOmnisearch", method = RequestMethod.GET)
public ResponseEntity<?> personOmnisearch(@RequestParam("search") String search, PersistentEntityResourceAssembler assembler) {
Person p = personRepository.findOne(Long.valueOf(search));
if (p == null) {
p = personRepository.findBySsn(search);
}
if (p == null) {
throw new ResourceNotFoundException();
}
return ResponseEntity.ok(assembler.toResource(p));
}
}
效果很好,但是当使用Traverson 获取数据时,/api/persons/search 的_links 部分中没有personOmnisearch 链接。如何让 Spring Data REST 知道我的控制器以将其放入 api 中,以便无需知道直接 URL 即可导航到它?
这是我的 Traverson 代码,以防万一:
api.json()
.follow('$._links.persons.href', '$._links.search.href', 'omniSearch')
.withTemplateParameters({
search: search
})
.getResource()
附: - 我不确定这是 Spring Data REST 还是 HATEOAS 问题,所以我标记了两者。随意删除不相关的。
【问题讨论】:
标签: java spring spring-data-rest spring-hateoas