잡동사니/깨달음

RestController와 Controller의 용도 차이.

배워도끝이없네 2021. 5. 7. 09:53

Rest방식이 무엇인지는 몇주 전에 찾아보았던것 같은데 그냥 글로만 읽고

 

아 그런거구나 하고 지나갔었다.

 

프로젝트를 진행하게 되면서 Controller단을 만들어야 하는 경우가 생겼는데. 이때 RestController와 Controller의 차이를

 

명확하게 알지 못해서 꽤 인터넷을 헤메고 다녔었다.

 

Controller는 view페이지로 페이지를 redirect시키거나 반환하는 역활을 해주는데

 

RestController는 맵핑된 url로 접속하게 되면 view가 하나도 없이 RestController로부터 전달받은 데이터만

 

String형태로 페이지에 쭉 적혀있을 뿐이었다.

 

내가 웹서핑과 뇌피셜로 내린 결론은 이것이다.

 

 

1. RestController는 ajax나 fetch, axios같은 통신으로 요청을 받을때 단지 'data'만  반환시켜주는 Controller다.

 

 - data만 반환시켜서 반환받은 data를 통신을 요청한곳에서 이용하기 때문에 당연히 view페이지를 redirect할 필요가 없

다.

 

 

2. RestController는 Restful하게 만들기 위해 필요한 아이이다!

 

 - 사실 이렇게 데이터 통신을 이용해 값을 받는건 꼭 RestController가 아니어도 할 수 있다. 하지만 이렇게

RestController라는 어노테이션이 생긴 이유는 코딩을 하는 사람이 시각적으로 분명하게 알아볼 수 있도록 구분하기 위

해서라고 생각한다. 

 

 그냥 Controller에서 RequestBody 어노테이션을 사용하면 똑같이 사용 할 수 있겠지만 그렇다면 함수의 이름을 아주 명

확하게 지어야 이 함수가 어떠한 기능을 할 것인지 알 수 있다.

 

 하지만 RestController를 이용해 Put, Delete, Patch, Post ..Mapping 을 통해 함수를 매핑한다면 함수이름이 개떡같아도

어노테이션만 보고도 아 이친구가 어떤역활을 하겠구나 하는것을 직관적으로 알 수 있다. (물론 함수이름도 공을 들여야

겠지만)

 

 

 

이 Rest방식의 기준을 철저히 맞추며 코딩하는사람은 그렇게 많지 않다고 한다.

 

하지만 분명히 잘 사용한다면 코딩할때 좋은 습관이 되지 않을까?