1 minute read

nest.js시작

setting

$ npm i -g @nestjs/cli
$ nest new project-name

실행

pakage.json에서 어떻게 시작할지 확인

image

npm run start:dev로 시작하면 된다!

  1. app : 앱 구동
  2. AppModule : 모든 것의 root가 되는 모듈

  3. AppController : routing을 hendle하는 부분
  4. AppService : stores controller for the router

Module

모듈은 한가지의 역할을 하는 앱이라고 볼수있다.

@Module() 데코레이터로 주석이 달린 클래스로, Nest가 애프리케이션 구조를 구성하는 데 사용하는 메타데이터를 제공한다.

모듈은 Nest에서 애플리케이션 구조를 범위로 구성하는데 사용된다.

컨트롤러와 공급자는 선언되는 모듈에 따라 범위가 지정되고, 모듈과 해당 클래스(컨트롤러 및 공급자)는 Nest가 DI(종속성 주입)을 수행하는 방법을 결정하는 그래프를 형성한다.

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})

controller

기본적으로 url을 가져오고 함수를 실행하는 일을 한다.

컨트롤러는 들어오는 요청을 처리하고 클라이언트에 응답을 반환하는 역할을 한다.

express의 router같은 존재이다.

Get()

라우트 핸들러(메소드) 데코레이터

HTTP GET요청을 지정된 경로로 라우팅한다.

 @Get()
  getHello(): string {
    return this.appService.getHello();
  }

movie contoller만들기

$ nest g co 
> contoller이름	

입력을 통해 새로운 contoller을 생성할 수 있다.

컨트롤러를 통해 @Get실행하기

  • movie/ 경로 : @Get()
  • movie/1 경로 => @Get('/:id') => @Param을 통해 id값을 가져올수있다.

image

무언가를 원하면 요청해야한다! (@Param)

직접 요청하지 않으면 아무것도 제공되지 않음

contoller 완성

@Controller('movies')
export class MoviesController {
  @Get()
  getAll() {
    return 'This will return all movies';
  }

  @Get('/:id')
  getOne(@Param('id') id: string) {
    return `this will return one movie tith th id : ${id}`;
  }

  @Post()
  create() {
    return 'This will create a movie';
  }

  @Delete('/:id')
  remove(@Param('id') movieId: string) {
    return `This will delete a movie with the ${movieId}`;
  }

  //update
  //@put은 모든 리소스를 업데이트한다.
  //movie의 일부분만 업데이트할때는 patch사용
  @Patch('/:id')
  path(@Param('id') movieId: string) {
    return `This will delete a movie with the id : ${movieId}`;
  }
}
		

으응..? 이상하다

Nest가 아니고 Next를 공부해야되네요..

Updated: