@Controller와 @RestController의 차이점
👉 @Controller
@Target(value=TYEP)
@Retention(value=RUNTIME)
@Documented
@Component
public @interface Controller
- Model 객체를 만들어 데이터를 담고 View를 반환
- View에 표시될 데이터가 있는 Model 객체를 만들고 올바른 View를 선택하는 일을 담당
- @ResponseBody를 사용하여 HTTP Response Body에 데이터를 담아 요청을 완료할 수 있다.
- @Controller는 클래스를 Spring MVC 컨트롤러로 표시하는데 사용
- Client는 URI 형식으로 웹 서비스에 요청을 보낸다.
- Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트.
- @ResponseBody를 사용하여 Client에게 JSON 형태로 데이터를 반환.
👉 @RestController
@Target(value=TYEP)
@Retention(value=RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController
- 단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP 응답에 담아서 전송
- RESTful 웹 서비스에서 사용되는 특수 컨트롤러 (@Controller와 @ResponsBody의 동작을 하나로 합친 컨트롤러)
- @RestController을 표시하면 모든 메소드가 뷰 대신 객체로 작성
- 모든 핸들러 메소드에서 @ResponseBody를 사용할 필요가 없다.
- RestController의 주용도는 JSON 형태로 객체 데이터를 반환하는 것
🙋♂️ 소감 :
REStful 웹 서비스를 만드는 경우 @Controller + @ResponseBody를 사용하는 것 보다 @RestController을 사용하는 것이 좋다.
😈 아는 내용이라고 그냥 넘어가지 않기! 😈
'❤️🔥TIL (Today I Learned)' 카테고리의 다른 글
[TIL] 2022-12-21(38day) (0) | 2022.12.21 |
---|---|
[TIL] 2022-12-20(37day) (0) | 2022.12.20 |
[TIL] 2022-12-15(35day) (0) | 2022.12.18 |
[TIL] 2022-12-14(34day) (0) | 2022.12.15 |
[TIL] 2022-12-14(33day) (1) | 2022.12.14 |
댓글