Nest CLI
Nest CLI는 Nest 애플리케이션을 초기화, 개발, 유지 관리하는 인터페이스 도구이다.
$ npm o -g @nests/cli
$ cd '프로젝트를 생성할 디렉토리 경로'
$ nest new project-name
├── node_modules
├── src
│ ├── app.controller.spec.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ └── main.ts
├── test
├── .eslintrc.js
├── .gitignore
├── .prettierrc
├── nest-cli.json
├── package-lock.json
├── package.json
├── README.md
├── tsconfig.build.json
└── tsconfig.json
eslintrc.js
prettierrc
nest-cli.json
tsconfig.json
src
@Module()
데코레이터를 사용한다.@Controller()
데코레이터를 사용한다.user.controller.ts
import { Controller, Get } from '@nestjs/common';
@Controller('user')
export class UserController {
@Get() // GET /user 요청에 매핑
findAllUsers(): string {
return 'this action returns all users';
}
@Post('/add') // POST /user/add 요청에 매핑
addUser(): string {
return 'this action adds new user';
}
}
@Get()
데코레이터는 Nest에 HTTP 요청에 대한 특정 엔드포인트에 대한 핸들러를 생성하도록 한다.@Controller('user') // 메소드 데코레이터에 지정된 경로 'user'
export class UserController // 컨트롤러에 선언된 접두사 'user'
@Get()
데코레이터에 경로를 추가하지 않았으므로 위 코드는 GET /user
요청에 핸들러에 매핑한다.@Post('/add')
데코레이터를 추가하면 POST /user/add
요청에 대한 라우트 매핑을 생성한다.@Injectable()
데코레이터를 사용하는 클래스이다.@Injectable()
데코레이터로 인해 애플리케이션 전체에서 사용될 수 있다.user.controller.ts
import { Controller, Get } from '@nestjs/common';
import { UserService } from './user.service';
@Controller('user')
export class UserController {
constructor(private userService: UserService) {} // Dependency Injection
@Get()
findAllUsers(): string {
return this.userService.findAllUsers();
}
}
Constructor()
에서 이루어진다.user.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class UserSercvice {
findAllUsers(): string {
return 'this action returns all users';
}
}
user.module.ts
import { Module } from '@nestjs/common';
import { UserController } from './user.controller';
import { UserService } from './user.service';
@Module({
controllers: [UserController],
providers: [UserService],
})
export class AppModule {}
Nest 공식 사이트
당근마켓 - TypeScript를 활용한 서비스개발
인프런 - 따라하며 배우는 Nest.JS