ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Nest.js Api만들기 3 (@Query )
    FrameWork/Nest.js 2022. 6. 17. 10:24

    나만의 모듈만들기

    가장먼저 할 것은 url을 가져오고, function을 실행하는 파일을 만드는 것이다. 즉 controller를 만들어야 한다.

     

    Nest.js에는 이미 훌륭한 cli가 설치되어 있다. nest 명령어를 통해서 확인하면, 이용할 수 있는 훌륭한 것들을 많이 가지고 있다. 그 예) 중 하나는 generate(생성)이다. 해당 커맨드 라인으로 Nest.js의 거의 모든 것을 생성할 수 있기 때문이다.

     

     

    *CLI(Command-line interface,커맨드 라인 인터페이스) : 명령어 인터페이스는 가상 터미널 또는 터미널을 통해 사용자와 컴퓨터가 상화 작용하는 방식을 뜻한다.

     

     

    첫 번째로 생성할 것은 새로운 controller이다.

    위 그림과 같이 nest 명령어로 명령을 하고   controller의 이름을 정하면, @Module 안의 controller에 MoviesController를 이미 import해준 것을 확인 할 수 있다.

     

    @Controller 부분이 해당 controller가 반응할 url의 entry point를 컨트롤한다.

     

     

    Nest.js에서는 무언가 필요하면 직접 요청해야 한다. 위와 같은 코드에서는 url에 있는 id하는 parameter를 get하기를 원한다는 뜻이다. 파라미터 데코레이터를 사용하면, Nest.js는 해당 함수가 url에 있는 id 파라미터를 원한다는 것을 알게될 것이다. @Param 데코레이터 안에 들어가는 문자열은 @Get 데코레이터 의 명시해준 것과 일치해야 한다.

     

    @Post

    @Post 데코레이터를 사용한 함수에서 해당 request에서 body부분을 가져오고 싶다면

     

    위 코드와 같이 @Body 데코레이터를 사용한다음 바로 옆에 해당 objecr를 담을 변수를 명시해주면 된다.

     

    그러고 나서 log를 확인해보면 post request의 body에 실린 object가 정상적으로 출력된는 것을 확인 

     

    @Patch

    업데이트 해야할 movie의 id를 알고 싶으므로 url를 이용해서 파라미터도 가져와야 하고 또 변경될 상세 정보에 대해서도 request의 body를 통해 가져와야한다.

    파라미터와 body를 통해 받은 정보를 종합해 object를 만들어서 return한다.

     

    @Put

    resource에 모든 부분을 update한다.

     

    @Query

    request url를 이용해서 {"year":""}같은 query argument를 보내고 싶다면 =>

     

    Get http://localhost:3000/movies/search?year=2000

     

    ⭐Tip

    @Get 'search' url를 받는 부분이 @Get '/:id' url를 받는 부분보다 아래에 있으면  Nest.js는 search를 id로 판단한다.

    @Get(' :id ') 같은 url 반응 함수가 상위에 있으면, 다른 @Get들이 동작하지 않는다.

    댓글

Designed by Tistory.