Весенний отдых веб-службы @requestparam для пользовательского класса метода (НЕ строка)
Я использую этот учебник https://spring.io/guides/gs/rest-service/
Я хочу передать параметр метода API веб-службы, отличный от String:
@RestController
public class ApiClass {
@RequestMapping("/service")
public int service(@RequestParam(value="paramIn") CustomClass paramIn) {
if (paramIn.value != 0) return 1;
else return 0;
}
}
Но когда я пытаюсь это сделать, я получаю эту ошибку:
HTTP Status 500 - Не удалось преобразовать значение типа "java.lang.String" в требуемый тип "CustomClass"; вложенным исключением является java.lang.IllegalStateException: невозможно преобразовать значение типа [java.lang.String] в требуемый тип [CustomClass]: не найдено подходящих редакторов или стратегии преобразования найдено`
Thnaks,
1 ответ
Обычный способ сделать это - использовать POST
или же PUT
метод и аннотировать пользовательский объект с @RequestBody
, Например:
@RequestMapping(value = "/service",
method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE)
public int service(@RequestBody CustomClass paramIn) {
// do something with the paramIn
}
если ты POST
JSON представление вашего CustomClass
экземпляр до конечной точки /service
Spring будет десериализовать его и передать в качестве аргумента вашему контроллеру.