gpt4 book ai didi

Spring Data Rest - 添加到搜索端点的链接

转载 作者:行者123 更新时间:2023-12-02 07:18:37 26 4
gpt4 key购买 nike

在我们的 Spring-Data-Rest 项目中,我们在/buergers/search/findBuergerFuzzy?searchString="..."端点上有一个自定义(模糊)搜索。

是否可以在/buergers/search 端点上添加它的链接(不覆盖自动公开的存储库 findBy 方法)?

Controller 公开搜索:

@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);
}
}

最佳答案

更新:这是一个过时的解决方法答案。升级到 Spring HATEOAS 1.0。

<小时/>

旧解决方法:

挖掘 spring-data-rest 源我发现了 RepositorySearchesResource这似乎解决了问题。

@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;
}
}

因为我们是通过模板生成这段代码的,所以这已经足够了,可以满足我们的需求。请务必检查评论以获取正确且安全的方法。

关于Spring Data Rest - 添加到搜索端点的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32778809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com