-
Spring MVC(@RequestBody, HttpEntity, @ResponseBody, ResponseEntity)웹개발/Spring 2020. 7. 30. 20:27
이 내용은 인프런의 스프링 웹 MVC강좌를 참고하여 만들었습니다.
1, @RequestBody
- 요청본문에 있는 형태가 json데이터 등이 있을 때 HttpMessageConverter를 통하여 변환한 객체로 받을 수 있게 해 준다.
- 유효성 검사가 가능하고 BindingResult를 통하여 타입 매칭이 잘 못 되었을 시 처리가 가능하다.
- HttpMessageConverter는 WebMvcConfigurer를 통하여 추가를 하거나 다시 설정이 가능하다.
1) 추가시 : extendMessageConverters를 override
설정시 : configureMessageConverters를 override
2) 기존 컨버터 : WebMvcConfigurationSupport.addDefaultHttpMessageConverters
@Controller @RequestMapping("/api/events") public class Eventapi { @PostMapping @ResponseBody public Event createEvent(@RequestBody @Valid Event event, BindingResult bindingResult){ if (bindingResult.hasErrors()){ bindingResult.getAllErrors().forEach(error -> { System.out.println(error); }); } return event; } }
2, HttpEntity
-@RequestBody이외에 추가적으로 헤더 정보를 사용 할 수 있다.
@Controller @RequestMapping("/api/events") public class Eventapi { @PostMapping @ResponseBody public Event createEvent(HttpEntity<Event> request){ //save event MediaType contentType = request.getHeaders().getContentType(); System.out.println(contentType); return request.getBody(); } }
3, @ResponseBody
- 데이터를 HttpMessageConverter를 사용하여 응답 본문에 메세지로 보냄
- @RestController를 사용하면 추가적으로 붙힐 필요가 없음
4, ResponseEntity
- 응답 헤더와 본문 내용을 설정하여 응답을 처리 할 수 있음
@Controller @RequestMapping("/api/events") public class Eventapi { @PostMapping public ResponseEntity<Event> createEvent(@RequestBody @Valid Event event, BindingResult bindingResult){ //save event if (bindingResult.hasErrors()){ return ResponseEntity.badRequest().build(); } return ResponseEntity.ok(event); //이렇게 응답 설정도 가능 //return new ResponseEntity<Event>(event, HttpStatus.CREATED); } }
1) ResponseEntity.ok(event); : 200응답을 보냄(본문은 event)
2) ResponseEntity<Event>(event, HttpStatus.CREATED); : 201응답을 보냄(본문은 event)
3) ResponseEntity.badRequest().build(); : 400응답을 보냄
'웹개발 > Spring' 카테고리의 다른 글
Spring MVC(MultipartFile와ResponseEntity) (0) 2020.07.30 Spring MVC(RedirectAttribute) (0) 2020.07.30 Spring MVC(세션 관리) (0) 2020.07.28 Spring MVC(폼 서블릿 오류 해결) (0) 2020.07.28 Spring MVC(@ModelAttribute, @Valid, @Validated) (0) 2020.07.28