Отображение DTO для службы RESt типа GET

Разработка сервиса 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, нам нужно сделать это вручную.

Почему не POST?

Sudhir Ojha 23.05.2018 12:14

@SudhirOjha Возможно, потому что запрос ничего не меняет на сервере (то есть в базе данных)

Prashant 23.05.2018 12:20

Как вы передаете json в rest-service?

Abhijeet 23.05.2018 12:24

@Abhijeet Я также могу передать его как параметр запроса, не обязательно отправлять его как тело запроса.

user630209 24.05.2018 06:38
0
4
247
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Метод 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

Другие вопросы по теме