Trong dự án Spring-Data-Rest của chúng tôi, chúng tôi có một tìm kiếm tùy chỉnh (mờ) trên điểm cuối/buergers/search/findBuergerFuzzy? SearchString = "...".Nghỉ ngơi dữ liệu mùa xuân - Thêm liên kết để tìm kiếm điểm cuối
Có thể thêm một liên kết cho nó trên/buergers/endpoint (Không ghi đè phương thức findBy Repository tự động tiếp xúc) không?
Controller lộ tìm kiếm:
@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);
}
}
Bạn nên kiểm tra 'resource.getDomainType()' để đảm bảo chức năng tìm kiếm của bạn chỉ hiển thị ở đúng tài nguyên. \t 'if (ResourceClass.class.equals (resource.getDomainType()))' –
Giải pháp của bạn khá nguy hiểm, bởi vì bạn đang mất tính nhất quán giữa ánh xạ phương thức của bạn (nó được phân phát ở đâu) và liên kết của nó (ở đâu sau đây mối quan hệ sẽ dẫn đầu). Bạn nên sử dụng 'linkTo' và' methodOn' phương thức tĩnh từ Spring Hateoas để tránh điều đó khi tạo 'Link' –