router, 에러 핸들링, logging, validation, 데이터 형변환, 3-layered archiecture, auth-middleware에 대한 정답을 제시해주고 프레임워크에서 다 처리해준다.
module화 => domain별로 module을 만들어서 controller, service, repo를 분리하여 관리할 수 있음 => 각각의 module들은 결국 app.module.ts에서 명시해주어 합쳐준다.
nest g mo <module_name>
캡슐화: 자신의 module에서만 사용 가능
* 이를 다른 module에서 사용하게 해주려면 exports: []
해주어야 한다.
router => decorator로 지정 (@Controller, @Get, @Post, @Put, @Delete
)
controller =>
request => @Req() req: Request
body => @Body() Body
params => @Param() param
DI: service layer 의존성 주입 (service를 provider 등록 필요)
service =>
DI: repository layer 의존성 주입 (repository를 provider 등록 필요)
비지니스 로직
repository =>
Model 정의, 주입
DB 직접 접근
nest g middleware <middleware_name>
throw new HttpException({status: 404, errorMessage: 'errorMessage'}, 404)
: 원하는대로 error customize 가능@UseFilters(HttpExceptionFilter
를 통해 에러 핸들링을 해줄 수 있다.useGlobalFilters(new HttpExceptionFilter())
ParseIntPipe
@Injectable
데코레이터로 주석이 달린 클래스, NestInterceptor
인터페이스를 구현해야함npm i --save class-validator class-transformer
npm install express-basic-auth
app.use(
['/docs', '/docs-json'],
expressBasicAuth({
challenge: true,
users: {
[process.env.SWAGGER_USER]: process.env.SWAGGER_PASSWORD,
},
}),
);