/ / Spring Data Rest - Dodaj link do wyszukiwania punktu końcowego - wiosna, wiosna-data-rest, wiosna-hateoas

Spring Data Rest - Dodaj link do wyszukiwania punktu końcowego - wiosna, wiosna-data-rest, wiosna-hateoas

W naszym Spring-Data-Rest Project mamy niestandardowe (rozmyte) wyszukiwanie na punkcie końcowym / buergers / search / findBuergerFuzzy? SearchString = "...".

Czy jest możliwe dodanie linku do niego na punkcie końcowym / buergers / search (bez przesłonięcia automatycznie wyeksponowanych metod FindBy Repozytorium)?

Kontroler ujawniający wyszukiwanie:

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

Odpowiedzi:

3 dla odpowiedzi № 1

Kopiąc źródło danych źródłowych, znalazłem RepositorySearchesResource co wydaje się rozwiązać 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;
}
}

Ponieważ generujemy ten kod za pomocą szablonów, jest to wystarczające i spełnia nasze potrzeby. Upewnij się, że komentarze są sprawdzane w odpowiedni i bezpieczny sposób.