본문 바로가기
Language/Java

Rest - API 기초 연습 (@RestContoller = @Controller + @ResponseBody)

by 쿠키오빠 2025. 1. 15.
반응형

 

스프링 부트 환경에서 Controller를 생성했다. 

 

기존 지식으로 MVC 패턴에서 Controller는 data 처리와 view까지 반환을 했었다.

 

하지만 React 활용 전, Rest-API에서의 Controller는 data 처리만 하면 된다고 한다.

 


일단 view 페이지 없이 기존 방식대로 url로 접근을 해보았다.

 

사진과 같이  RequestMapping으로 response 설정해주고 url 확인이 가능한 GetMapping 어노테이션으로 hello를 설정한다.

 

return 값으로  hello world!!! 라는 문자열을 전달하는데, 기존 대로라면 view 페이지를 설정해야 한다.
(예를 들어 hello.html)

 

이렇게 설정하면 당연히 경로를 찾을 수 없는 404 에러가 출력된다.

 

스프링은 ViewResolver를 통해 "hello world!!!"라는 이름의 뷰(HTML, JSP 등)를 찾지만, 해당 뷰 파일이 없어서 404 에러가 발생하는 것!!!

 

 


해결 방법으로는 @Controller 어노테이션 말고 @RestController 어노테이션을 사용하는 것이다.

 

@RestController 어노테이션은 JSON 또는 XML과 같은 데이터를 직접 반환하기 위해 설계되었고,

view 페이지 없이 return 문자열이 출력되는 이유는 @RestController가 HTTP 응답 바디에 데이터를 직접 쓰도록 설계되었기 때문이다.

 

 

즉, 서버에서 프론트 단으로 응답을 보내는 @RestController 는 @ResponseBody와 @Controller를 합친 역할을 하는 것.

 

실제로 클래스단에 @Controller 어노테이션으로 설정하고 해당 메서드에 @ResponseBody를 추가해도 에러 없이 페이지가 출력된다.

 


이상 기본 개념 끄적끄적..

 

추가로 url에 노출되는 @GetMapping만 컨트롤이 가능하다~~

 

추후에 postman이라는 어플을 통해 Post / put / delete 등등 끄적 예정

반응형