Spring Data Rest-将链接添加到搜索端点 [英] Spring Data Rest - Add link to search endpoint
问题描述
在我们的Spring-Data-Rest项目中,我们在/buergers/search/findBuergerFuzzy?searchString ="..."终结点上进行了自定义(模糊)搜索.
In our Spring-Data-Rest Project we have a custom (fuzzy) search on a /buergers/search/findBuergerFuzzy?searchString="..." endpoint.
是否可以在/buergers/search端点上为其添加链接(不覆盖自动公开的存储库findBy方法)?
Is it possible to add a link for it on the /buergers/search endpoint (Without overriding the automatically exposed Repository findBy Methods)?
公开搜索的控制器:
@BasePathAwareController
@RequestMapping("/buergers/search/")
public class BuergerSearchController {
@Autowired
QueryService service;
@RequestMapping(value = "/findBuergerFuzzy", method = RequestMethod.GET)
public
@ResponseBody
ResponseEntity<?> findBuergerFuzzy(PersistentEntityResourceAssembler assembler, @Param("searchString") String searchString) {
if (searchString.length() < 3)
throw new IllegalArgumentException("Search String must be at least 3 chars long.");
List<Buerger> list = service.query(searchString, Buerger.class, new String[]{"vorname", "nachname", "geburtsdatum", "augenfarbe"});
final List<PersistentEntityResource> collect = list.stream().map(assembler::toResource).collect(Collectors.toList());
return new ResponseEntity<Object>(new Resources<>(collect), HttpStatus.OK);
}
}
推荐答案
Digging the spring-data-rest source i found the RepositorySearchesResource which seems to solve the problem.
@Component
public class SearchResourcesProcessor implements ResourceProcessor<RepositorySearchesResource> {
@Override
public RepositorySearchesResource process(RepositorySearchesResource repositorySearchesResource) {
final String search = repositorySearchesResource.getId().getHref();
final Link findFullTextFuzzy = new Link(search + "/findFullTextFuzzy{?q}").withRel("findFullTextFuzzy");
repositorySearchesResource.add(findFullTextFuzzy);
return repositorySearchesResource;
}
}
由于我们是通过模板生成此代码的,因此足够并满足了我们的需求.确保检查注释是否正确,安全.
Because we generate this code by templates, this is sufficient and fullfills our needs. Make sure to check the comments for the right and safe way.
这篇关于Spring Data Rest-将链接添加到搜索端点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!