2016-02-29 32 views
0

我有一個控制器,它看起來是這樣的:如何在API列表中添加@RepositoryRestController方法?

@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問題,所以我都標記了兩個。隨意刪除無關的任何一個。

回答

0

您可能想要執行ResourceProcessor<RepositorySearchesResource>並在其回調方法process(…)中檢查給定的RepositorySearchesResource的域名類型,並將該鏈接添加到控制器方法中。

如果實現註冊爲Spring Bean,它將被調用來訪問可用搜索列表的每個訪問。