ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 새로운 모듈 생성해서 연결하기
    NestJS 2022. 1. 27. 12:26

    터미널에서 nest 명령어를 통해서 새로운 프로젝트부터 만들어 보겠습니다.

    원하시는 위치로 이동하신 후에 명령어는 "nest new 프로젝트 이름"입니다. ex) nest new test

     

    src가 가장 많이 작업할 공간입니다.

    src에서 아래처럼 "app.module.ts"와 "main.ts"를 제외한 나머지 파일들은 지워줍니다.

     

    저는 pages라는 모듈, 컨트롤러, 서비스를 아래처럼 만들었습니다.

     

    새로운 모듈 등 만드는 과정

    다 만드시면 아래와 같은 상태가 될 것입니다.

    src안에 자동으로 pages라는 디렉토리가 생성되고 그 안에 모듈 등이 생성되었습니다.

    새로 만든 모듈, 컨트롤러 등에 대해 간략히 설명하고 어떤 식으로 진행되는지 알려드리고자 합니다.

     

    # spec.ts

    - 나중에 우리가 만든 로직을 테스트해주는 것으로 알고 있는데 지금 당장 중요한 것이 아니니 추추에 다시 짚고 넘어가겠습니다. 당장은 크게 신경 안 쓰셔도 됩니다.

     

    # 전체적인 흐름

    Client -요청-> Main -요청-> Module -요청-> Controller -요청-> Service
    Service -응답-> Controller -응답-> Module -응답-> Main -응답-> Client

     

    # main

     - request가 오면 Module로 전달 후 Module로부터 response를 받아서 NestFactory로 전달

     

    # Module

     - request는 해당 Controller에게 전달하고 Controller로부터 전달받은 response를 main에게 전달

     

    # Controller (Get, Post 등을 구분해서 해당 Service로 보낸다.)

    - Module에게서 받는 request를 해당 Service에게 전달하고 service에서 받은 response를 Module에게 전달

     

    # Service

    - 기본적으로 비즈니스 로직을 작성하는 곳

    - Controller로부터 받은 request에 대한 response를 해당 controller로 전달

     

    import { Controller, Get } from '@nestjs/common';
    import { PagesService } from './pages.service';
    
    @Controller('pages')
    export class PagesController {
      constructor(private pagesService: PagesService) {}
    
      @Get()
      getMyPage(): string {
        return this.pagesService.getMyPage();
      }
    }

    controller 작성 예시

     

    import { Injectable } from '@nestjs/common';
    
    @Injectable()
    export class PagesService {
      getMyPage(): string {
        return 'My Page';
      }
    }

    service 작성 예시

     

    맵핑을 하기 전에는 아래처럼 /pages 까지만 되어 있다는걸 확인하실 수 있습니다.

    맵핑하기 이전

    잘 작성해서 맵핑이 되었다면 아래처럼 "Mapped {/pages, GET} route" 이렇게 맵핑되어 있다는 것을 보실 수 있습니다.

    맵핑 된 이후

    그 후 postman을 통해서 테스트를 하면 작성해둔 문자열이 리턴되는 것을 확인하실 수 있습니다.

    postman으로 테스트

     

     

     

     

     

     

     

     

    댓글

Designed by Tistory.