반응형
@ResponseBody
@ResponseBody는 핸들러 메서드에 붙일 수 있는 애노테이션으로 HttpMessageConverter를 사용해 응답 본문(body) 메시지로 보낼 때 사용할 수 있다. 그러나 @RestController를 사용하면 그 Class안의 모든 메서드에 @ResponseBody가 자동으로 붙게된다.
@Controller
@RequestMapping("/api/events")
public class EventApi {
@PostMapping
@ResponseBody
public Event createEvent(@RequestBody @Valid Event event,
BindingResult bindingResult) {
// save event to DB
if (bindingResult.hasErrors()){
bindingResult.getAllErrors().forEach(error -> {
System.out.println(error);
});
}
return event;
}
}
// 위의 코드와 똑같은 동작을 하는 코드이다.
@RestController // 자동으로 @ResponseBody가 붙는다
@RequestMapping("/api/events")
public class EventApi {
@PostMapping
public Event createEvent(@RequestBody @Valid Event event,
BindingResult bindingResult) {
// save event to DB
if (bindingResult.hasErrors()){
bindingResult.getAllErrors().forEach(error -> {
System.out.println(error);
});
}
return event;
}
}
ResponseEntity
응답을 보낼 때 헤더 및 상태 코드를 직접적으로 다룰 때 사용할 수 있다.
@RestController
@RequestMapping("/api/events")
public class EventApi {
@PostMapping
public ResponseEntity<Event> createEvent(@RequestBody @Valid Event event, BindingResult bindingResult) {
// save event to DB
if (bindingResult.hasErrors()){
// error가 있다면 BadRequest를 보낸다.
return ResponseEntity.badRequest().build();
}
return ResponseEntity.ok(event); // 상태코드 200으로 event를 응답본문에 담아 보낸다.
// 아래 코드는 상태코드를 CREATED(201)로 설정하여 보낸다.
// return new ResponseEntity<Event>(event,HttpStatus.CREATED);
}
}
반응형
'Web > Spring' 카테고리의 다른 글
[Spring MVC] @InitBinder 사용하기 (1) | 2020.02.04 |
---|---|
[Spring MVC] @ModelAttribute의 또 다른 사용 (0) | 2020.02.04 |
[Spring MVC] @RequestBody와 HttpEntity 사용하기 (0) | 2020.01.23 |
[Spring MVC] ResponseEntity를 사용해서 파일 다운로드 구현 (0) | 2020.01.23 |
[Spring MVC] MultipartFile로 파일 업로드하기 (0) | 2020.01.23 |