Logs
[Spring boot] @RequestBody로 객체 여러 개(entity, dto, dao, vo등) 한 번에 받아서 처리하는 법
랩실외톨이
2023. 2. 22. 16:32
반응형
프로젝트를 하다가 한 번에 여러 객체를 받아서 로직을 처리해야 하는 일이 생겼다.
@RequestBody에서 값들을 JSON 형태로 받아오는데 이때 값들의 형태를 아래와 같이 고정해서 보내준다.
{
"item": {
...
},
"option": {
...
}
}
이런 식으로 값을 넘겨받았다고 가정한다.
그리고 그 값들을 dto class에 넣어준다고 가정한다.
그럼 Controller에서 값들을 이렇게 처리해준다.
@PostMapping("/items/new")
public ResponseEntity<?> newItem(@RequestBody ObjectNode item) throws JsonProcessingException {
try {
ObjectMapper mapper = new ObjectMapper();
ItemSaveRequestDto itemDto = mapper.treeToValue(item.get("item"), ItemSaveRequestDto.class);
OptionSaveRequestDto option = mapper.treeToValue(item.get("option"), OptionSaveRequestDto.class);
...
return new ResponseEntity(HttpStatus.OK);
} catch (Exception e) {
return exceptionHandling();
}
}
JSON 데이터 값을 Parsing 하기 위해서 exception을 던져주고
ObjectNode로 JSON 값들을 입력받는다.
ObjectMapper를 사용해서 값들을 잘라서 저장해 준다.
반응형