5
Spring-Data-Rest Projectでは、/ buergers/search/findBuergerFuzzy?searchString = "..."エンドポイントでカスタム(ファジィ)検索を行います。Spring Data Rest - 検索エンドポイントへのリンクを追加する
自動的に公開されたリポジトリのfindByメソッドを上書きしないで、/ buergers/searchエンドポイントにリンクを追加できますか?
検索を暴露コントローラー:
@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);
}
}
'resource.getDomainType()'をチェックして、検索機能が正しいリソースにのみ表示されるようにする必要があります。 \t 'if(ResourceClass.class.equals(resource.getDomainType()))' –
あなたのメソッドのマッピング(どこで提供されているか)とそれのリンクとの間の整合性が失われているので、あなたのソリューションは非常に危険です。関係が結ぶ)。 'Link'を作成する際に、Spring Hateoasの' linkTo'メソッドと 'methodOn'静的メソッドを使用してください。 –