Nestjs (8) 썸네일형 리스트형 Guards @Injectable() 데코레이터로 주석이 달린 클래스. CanActivate인터페이스를 구현해야한다 . 가드는 각 미들웨어 이후 , 인터셉터 또는 파이프 전에 실행된다. Authorization guard 토큰을 추출하고 유효성을 검사하고 추출 된 정보를 사용하여 요청을 진행할 수 있는지 여부를 결정. auth.guard.ts import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common'; import { Observable } from 'rxjs'; @Injectable() export class AuthGuard implements CanActivate { canActivate( context: ExecutionContext,.. Pipes @Injectable() 데코레이터로 주석이 달린 클래스. PipeTransform 인터페이스를 구현해야한다. 변환 : 입력 데이터를 원하는 출력으로 변환 검증 : 입력 데이터를 평가하고 유효하다면 변경없이 그대로 전달합니다. 그렇지 않으면 데이터가 정확하지 않을 때 예외를 던집니 Object schema validation Joi library 를 사용하자. $ npm install --save @hapi/joi $ npm install --save-dev @types/hapi__joi import { PipeTransform, Injectable, ArgumentMetadata, BadRequestException } from '@nestjs/common'; @Injectable() export cl.. Middleware 미들웨어는 라우트 핸들러 전에 호출되는 함수 함수 또는 @Injectable()데코레이터가있는 클래스에서 사용자 정의 Nest 미들웨어를 구현. 클래스는 NestMiddleware인터페이스를 구현해야 하지만 함수에는 특별한 요구 사항이 없다. 클래스를 사용하여 간단한 미들웨어 기능을 구현하는 것으로 시작. logger.middleware.ts import { Injectable, NestMiddleware } from '@nestjs/common'; import { Request, Response } from 'express'; @Injectable() export class LoggerMiddleware implements NestMiddleware { use(req: Request, res: Resp.. Modules @Module()데코레이터로 주석이 달린 클래스. 각 애플리케이션에는 root module이 있다. root module은 Nest가 응용 프로그램 그래프를 빌드하는 데 사용하는 시작점이다. cats / cats.module.ts import { Module } from '@nestjs/common'; import { CatsController } from './cats.controller'; import { CatsService } from './cats.service'; @Module({ controllers: [CatsController], providers: [CatsService], }) export class CatsModule {} app.module.ts import { Module } f.. Providers provider는 단순히 @Injectable()데코레이터로 주석이 달린 클래스. controller는 HTTP 요청을 처리하고 더 복잡한 작업을 provider에게 위임해야한다. SOLID원칙을 따르는 것이 좋다 . Service cats.service.ts import { Injectable } from '@nestjs/common'; import { Cat } from './interfaces/cat.interface'; @Injectable() export class CatsService { private readonly cats: Cat[] = []; create(cat: Cat) { this.cats.push(cat); } findAll(): Cat[] { retu.. Controller 컨트롤러는 들어오는 요청 을 처리 하고 클라이언트에 응답 을 반환. 기본 컨트롤러를 만들기 위해 클래스와 데코레이터를 사용. 데코레이터 데코레이터 object @Request() req @Response(), @Res()* res @Next() next @Session() req.session @Param(key?: string) req.params / req.params[key] @Body(key?: string) req.body / req.body[key] @Query(key?: string) req.query / req.query[key] @Headers(name?: string) req.headers / req.headers[name] Route wildcards 패턴 기반 경로도 지원. @Get.. Getting Started 목표 기본 CRUD 언어 TypeScript와 JavaScript 호환. VanilaJavaScript를 사용하려면 babel 컴파일러 필요. 전제조건 Node.js 버전 8.9.0 이상 기본 파일 구조 src - app.controller.ts - app.module.ts - main.ts 파일 설명 파일명 설명 app.controller.ts 단일 경로의 기본 컨트롤러 샘플. app.module.ts 응용 프로그램의 루트 모듈 main.ts 핵심 기능 NestFactory을 사용하여 Nest 애플리케이션 인스턴스를 작성하는 애플리케이션의 엔트리 파일. 실행 $ npm run start Nest.js란 소개 Nest (NestJS)는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션 을 구축하기위한 프레임 워크. TypeScript 및 OOP (객체 지향 프로그래밍), FP (기능 프로그래밍), 및 FRP (기능 반응성 프로그래밍) 요소 결합. 기본적으로 Nest는 Express (기본값)와 같은 강력한 HTTP Server 프레임 워크 를 사용하며 선택적으로 Fastify 도 사용하도록 구성 할 수 있다. 설치 Nest Cli 사용 $ npm i -g @nestjs/cli $ nest new project-name 이전 1 다음