Разработка сервиса REST в приложении Spring BOOT.
Это входной json
{
"rcode": 122,
"ecode": [11, 12]
}
Код контроллера
@RequestMapping("/getPersonDTOList")
public List < PersonDTO > getPersonDTOList(
@RequestParam(value = "personDTO") String personDTO){
//how can I map this to DTO
}
// DTO
public class PersonDTO {
private Int rcode;
private List<Int> ecode;
}
Как я могу сопоставить эту строку с DTO в Spring BOOT, поскольку это GET, нам нужно сделать это вручную.
@SudhirOjha Возможно, потому что запрос ничего не меняет на сервере (то есть в базе данных)
Как вы передаете json в rest-service?
@Abhijeet Я также могу передать его как параметр запроса, не обязательно отправлять его как тело запроса.
Метод GET не несет никаких телесных данных.
Вы либо:
Измените свой API на метод POST (который по умолчанию поддерживается в @RequestMapping.
@RequestMapping("/getPersonDTOList")
public List < PersonDTO > getPersonDTOList(@RequestBody PersonDTO person)
Измените свой API, чтобы он принимал @RequestParameter вместо @RequestBody:
@RequestMapping("/getPersonDTOList")
public List < PersonDTO > getPersonDTOList(@RequestParam("rcode") int rcode, @RequestParam("ecode") List<Integer> ecode )
У меня нет такого опыта, но если вы используете @RequestMapping, я думаю, вам также нужно установить тип:
@RequestMapping("/getPersonDTOList", method = RequestMethod.POST ) // or GET...
Вы также можете использовать @PostMapping, @GetMapping и т. д.
@PostMapping("/getPersonDTOList")
public PersonDTO getPersonDTOList(@RequestBody PersonDTO person){
return person;
}
Я думаю, это действительно только с @RestController
Почему не POST?