🔻Back-End/Spring

[Spring] @RestController 적용하기

_니지 2022. 10. 27. 18:59

❗상황

"getMapping sayHello Method run" 이란 문자열을 Get방식을 통해 브라우저에 바로 출력하고자 해서  @Controller와 @GetMapping ("/hello")로 API를 생성한다.

 

하지만 /hello 경로로 접근하면 오류가 발생한다.

 

 

❗RestController

기존의 @Controller는 객체 정보를 바로 출력해 주는 것이 아니라 리턴값이 view(html이나 thymeleaf)를 반환하기 때문에 view로 데이터를 보내기 위해 model을 사용했다.

RestController는 Rest API에서 많이 사용되는 방식으로 데이터를 뷰로 반환하는 게 아니라 Json 형태로 반환하여 프론트엔드에서 이 정보를 활용할 수 있게 한다.

따라서 @RestController = @Controller + @ResponseBody는 형태이며 @ResponseBody는 객체 정보를 출력해줄 수 있는 어노테이션(view가 아니라 data)이다.

 

 

❗해결

이 문제를 해결하기 위해 @Controller를 @RestController로 변경하고, 리턴값을 String이나 객체로 변경한다.

✏️String 리턴

@RestController로 변경

 

다시 실행해보면 원하던 data가 출력되었다

 


✏️instance 리턴

반환할 객체를 생성한다. (여기서는 엔티티를 그대로 사용하지만 Dto를 사용하는 것이 일반적이다)

 

return에 객체를 넣어준다.

 

브라우저에서 API 호출 시 json의 형태로 객체 안에 있는 필드 정보를 보여주는 것을 알 수 있다.

728x90
반응형