NestJS 세팅하기
2020. 10. 2. 15:33ㆍDEV/ETC
반응형
NestJS
NestJS란?
- Express와 마찬가지로 Node.js 서버 사이드에서 사용 가능한 프레임워크
- Express를 기반으로 제작되어 TypeScript로 서버 코드 작성
- 선택적으로 Fastify 사용 가능
Project Setup
NestJS 설치
yarn보다는 npm을 추천함
$ npm i -g @nestjs/cli
New Project
$ nest new
$ [project name]
파일 생성
$ nest g [file type] [file name]
$ nest g controller app
참고
$ nest
Usage: nest <command> [options]
Options:
-v, --version Output the current version.
-h, --help Output usage information.
Commands:
new|n [options] [name] Generate Nest application.
build [options] [app] Build Nest application.
start [options] [app] Run Nest application.
info|i Display Nest project details.
update|u [options] Update Nest dependencies.
add [options] <library> Adds support for an external library to your project.
generate|g [options] <schematic> [name] [path] Generate a Nest element.
Available schematics:
┌──────────┬─────────┐
│ name │ alias │
│ application │ application │
│ class │ cl │
│ configuration │ config │
│ controller │ co │
│ decorator │ d │
│ filter │ f │
│ gateway │ ga │
│ guard │ gu │
│ interceptor │ in │
│ interface │ interface │
│ middleware │ mi │
│ module │ mo │
│ pipe │ pi │
│ provider │ pr │
│ resolver │ r │
│ service │ s │
│ library │ lib │
│ sub-app │ app │
└──────────┴─────────┘
Project 구조
main.ts
모듈 결정
module
- 필요한 파일들을 import/export > controller, service 등
controller
- url을 가져오고 함수를 실행
- express의 router 역할
@Get('/hello')
sayHello(): string { // function name : return type
return 'Hello Everyone';
}
service
- 로직이나 비즈니스 서비스 실행 담당
- db 연결
entity
- 데이터 연결 타입
- injectRepository : 변수 지정처럼 한 번 받아서 재사용 > service, module 설정 필수
- connectXXX : 임시로 한 번 연결해서 데이터 사용
setting
class-validator
-1,8 +1,16 @@
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(
new ValidationPipe({
whitelist: true, // 데이터 타입 validation 실행
forbidNonWhitelisted: true, // 맞지 않는 타입 금지 설정
transform: true, // url로 들어온 데이터 타입 자동 변환 eg. string type >> number로 자동 변환
}),
);
await app.listen(3000);
}
bootstrap();
mapped-types
Mapped Types
@nestjs/mapped-types
- Dto 변환 도와줌
Create Dto
import { IsString, IsNumber, IsOptional } from 'class-validator';
export class CreateMovieDto {
@IsString()
readonly title: string;
@IsNumber()
readonly year: number;
@IsOptional()
@IsString({ each: true })
readonly genres: string[];
}
Update Dto
import { IsString, IsNumber } from 'class-validator';
import { PartialType } from '@nestjs/mapped-types';
import { CreateMovieDto } from './create-movie.dto';
export class UpdateMovieDto extends PartialType(CreateMovieDto) {}
참고
Single Resposibility Principle
NestJS 기반 게시판 REST API - DB 연동
반응형
'DEV > ETC' 카테고리의 다른 글
무료 데이터베이스 - Notion Database Table API 설정하기 (0) | 2023.07.25 |
---|---|
VScode 코드 자동 출력 Quokka (0) | 2021.12.06 |
Mac Terminal 설정 (0) | 2021.03.24 |
Mac Full Xcode 설치하기 (0) | 2021.03.19 |
PostgreSQL - psql로 csv에서 데이터 입력하기 (0) | 2020.10.08 |
Homebrew로 Java8 설치하기 (0) | 2020.09.29 |