podcasts 관련된 api를 만들어보자
그 전에 노래하나 들으면서 시작하자.
링크텍스트 Pink + White : Frank Ocean
먼저 터미널에 nest g mo podcasts로 모듈을 먼저 말들어준다.
생성해주면 AppModule에 자동으로 import된다.(너무 편하다.)
다음으로 RestAPI를 구현할 controller와 service를 생성해준다.
이 역시 명령어로 구현가능하다.
만약 명령어가 궁금하다면, 터미널에 nest라고 입력하면 필요한 명령어들이 출력된다.
우리는 controller와 service가 필요하므로 명령어를 입력해준다.
생성할때 이름을 모듈과 같은 이름으로 생성해주면 자동으로 폴더안에 생성된다.
그리고 정말 친절하게도 podcasts.module에 자동으로 controller와 service가 import된다.
그럼 controller와 service를 작성해보자.
간단하게 구현해본 모습이다. controller는 쉽게 말해서 출입구 역할을 한다고 생각하면 되는데, 사진에서도 보이듯이 @Controller옆의 'podcasts'가 문이라고 생각하면된다.(express를 공부하신분이라면 router를 생각하시면 된다.)
우리가 요청을 보낼때 localhost:8080(이건 내가 지정한 port번호이다.)/podcasts <- 이렇게 작성해주어야 저 컨트롤러 안으로 들어갈 수 있다는 뜻이다. 그러면 만약 hotel controller라고 하면
localhost:8080/hotel이라고 기본적으로 작성해야 한다는 뜻이다.
그리고 @Get 데코레이터 (데코레이터는 기능을 부여한다고 생각하면 되는데 저 getHi라는 함수한테 너는 get요청을 받았을때 실행될거라는 기능을 부여한다. 데코레이터는 물론 다양하게 존재한다.)를 사용하여 get요청을 수행한다는 것을 알려주고, 옆에 path를 적어주어서 ('/') 요청할때 어떤 방식으로 요청할지를 정해준다. getHi옆에는 return될 값의 타입을 정해준 것이다.
그럼 controller가 기능구현을 할때 필요한 service 부분도 작성하러 가보겠다.
service에서는 기본적으로 @Injectable이라는 데코레이터가 작성되어있다.
그리고 같은 이름으로 (굳이 같은 이름일 필요는 없지만 통일성을 위하여 권한다.) getHi라는 함수를 작성하여 주었다.
안에는 return 값을 적어주면 끝이다. 물론 getHi옆에도 타입을 정해줄 수 있다. (여기서는 string)
결과적으로 내가
라는 요청을 주면 controller에서 그 요청을 받아서 service에서 기능을 수행하고 그 return값을 다시 controller로 전달해준다.
값이 정상적으로 출력된다.
글 잘 봤습니다, 감사합니다.