2. 시작하기 전에,
여기서 다루지 않는 것들
nodejs
typescript
express
여기서 다루는 것들
nestjs
nestjs 설정
3. 목차
기초
1. NestJS는?
2. 주요 특징
3. NestJS CLI 설치
4. 프로젝트 생성
5. HelloWorld
활용
1. OAS 설정
2. Validation 설정
3. Configuration 설정
4. Logger 설정
5. Session 설정
6. Helmet & cors 설정
7. HttpMoudle 설정
13. 3. Configuration-설정
필수 모듈 설치
app.module.ts – Global 설정으로 처리
$ npm I --save @nestjs/config
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { AppController } from './app.controller
';
import { AppService } from './app.service';
@Module({
imports: [ConfigModule.forRoot()],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
14. 3. Configuration – 사용 예
import { Body, Controller, Get, Post } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { AppService } from './app.service';
import { UserDto } from './dto/User.dto';
@Controller()
export class AppController {
constructor(private readonly appService: AppService, private configService: ConfigService) { }
@Get()
getHello(): string {
return this.appService.getHello();
}
@Post('valid')
testValid(@Body() userDto: UserDto) {
// get an environment variable
const dbUser = this.configService.get<string>('DATABASE_USER');
// get a custom configuration value
const dbHost = this.configService.get<string>('DATABASE_PASSWORD');
return "pass valid! : " + dbUser + "/" + dbHost;
}
}
15. 4. Logger 설정
사용하려는 class 내부에 다음을 선언(예: app.controller.ts)
method 내부에서 사용
결과 Console
private readonly logger = new Logger(AppController.name);
this.logger.log(userDto);
16. 5. session 설정
필요 모듈 설치
main.ts 에 session 설정 추가
$ npm i express-session
$ npm i -D @types/express-session
import * as session from 'express-session’;
// somewhere in your initialization file
app.use(
session({
secret: 'my-secret',
resave: false,
saveUninitialized: false,
}),
);
17. 5. session 사용
app.controller.ts
Request는 express를 사용
결과 :
import { Request } from 'express';
@Get('/visits')
findAll(@Req() req: Request): string {
req.session["visits"] = req.session["visits"]
? req.session["visits"] + 1 : 1;
return "My VISITS : " + req.session["visits"];
}
18. 6. helmet & cors 설정
helmet 모듈 설치
helmet 모듈 사용(main.ts)
cors 사용(main.ts)
$ npm i --save helmet
import * as helmet from 'helmet';
app.use(helmet());
app.enableCors();
19. 7. HttpModule 사용
사용 선언(예 : app.module.ts)
사용 예 (app.controller.ts)
@Module({
imports: [ConfigModule.forRoot(), HttpModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
@Get('/httpTest')
async callMockHtt(): Promise<any> {
const res = await this.httpService.get('htt
p://jsonplaceholder.typicode.com/todos/1').toPr
omise();
return res.data;
}
20. 전체 소스 보기
https://github.com/lahuman/nestjs_101
21. 참고 자료
NestJS : https://nestjs.com
NestJS Documents : https://docs.nestjs.com