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를 사용해서 값들을 잘라서 저장해 준다.

 

 

 

 

 

반응형