Я хочу запросить базу данных для элементов, которые похожи (как sql) на данную строку, которая позже будет использоваться для функции автозаполнения в моем приложении. Я хочу использовать сервисы REST, но мне интересно, каков наилучший подход для его реализации. Я также считаю, что может быть позже, мне нужно ввести несколько параметров, таких как способ сортировки (asc, desc) или поиск по нескольким полям. Вот мое текущее решение, но я не уверен, что это лучший способ. URL-адрес службы "Мой отдых" выглядит примерно так. Я не хотел использовать RequestParam в этом случае, потому что он не показывал, что это будет оператор «как» вместо «равно»:
https://localhost/rest/device/serial/like/lac
Поиск рекомендаций относительно лучшего соглашения по именованию ресурсов REST и способов его реализации весной mvc.
@RestController
@RequestMapping({"rest/device"})
public class DeviceController {
private final ServiceManager serviceManager;
@GetMapping("/serial/like/{serial}")
@ResponseBody
public Iterable<Device> searchDevicesBySerialNumber(@PathVariable(value = "serial") String serial){
return this.serviceManager.getDeviceRepository().findBySerialNumberLike(serial);
}
}
Это еще один способ сделать то же самое:
https://localhost/rest/device?serial-prefix=lac
@GetMapping("")
@ResponseBody
public Iterable<Device> searchDevice(@RequestParam(value = "serial-prefix",required = false) String serialPrefix){
if (serialPrefix!=null) {
return this.serviceManager.getDeviceRepository().findBySerialPrefix(serialPrefix);
}
return this.serviceManager.getDeviceRepository().findAll();
}