ResponseEntity 에 대해 정리한 내용을 보고 싶다면 아래 링크로 이동
참고: ResponseEntity
Spring 에서 Controller 를 지정
해당 클래스를 Bean 으로 등록
HTTP Response Body가 생성되는 방식
전통적인 Spring MVC 의 Controller
@Controller는 주로 View
를 반환하기 위해 사용한다.
① ~ ⑤ : Client에서 보낸 요청은 DispatcherServlet을 거쳐 HandlerMapping을 통해 Controller를 찾고 요청을 수행하게 된다.
⑥ ~ ⑦ : Controller는 받은 요청을 처리하고 난 뒤 ViewName을 반환한다.
⑧ ~ ⑩ : DispatcherServlet은 ViewResolver를 통해 ViewName에 해당하는 View를 찾아 사용자에게 반환한다.
ResponseEntity 를 사용하면 View
와 함께 Data
(또는 객체)를 반환할 수도 있다.
@Controller
@RequiredArgsConstructor
@RequestMapping("/api")
public class UserController {
private final UserService userService;
// 회원 가입
@PostMapping("/signup")
public ResponseEntity<MsgResponseDto> signup(@RequestBody @Valid SignupRequestDto signupRequestDto) {
userService.signup(signupRequestDto);
return ResponseEntity.ok(new MsgResponseDto("회원가입 완료", HttpStatus.OK.value()));
}
// 로그인
@PostMapping("/login")
public ResponseEntity<MsgResponseDto> login(@RequestBody LoginRequestDto loginRequestDto, HttpServletResponse response) {
userService.login(loginRequestDto, response);
return ResponseEntity.ok(new MsgResponseDto("로그인 완료",HttpStatus.OK.value()));
}
}
RESTful 웹 서비스의 Controller
참고: 웹 동작방식 이해하기 - RESTful API란?
@RestController = @Controller + @ResponseBody
@Controller와 달리, 반환하려는 주류는 JSON 형태의 객체 데이터
REST API를 개발할 때 주로 사용
Header(HTTP 규격 구성 요소 中 하나)에 대해서 유연하게 설정을 할 수 없다
ResponseEntity
@Controller
@RequiredArgsConstructor
public class UserController {
private final UserService userService;
@GetMapping(value = "/users")
public @ResponseBody ResponseEntity<User> findUser(@RequestParam("userName") String userName){
return ResponseEntity.ok(userService.findUser(user));
}
}
참고: [Spring] @Controller와 @RestController 차이
참고: RestController 사용하기
참고: RESTful 하다?