본문 바로가기

전체 글

(109)
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
타입의 호환성 - 열거형 다른 열거형으로부터 유래된 값끼리는 호환되지 않는다. enum Status { Ready, Waiting } enum Color { Red, Blue, Green } let status: Status = Status.Ready; status = Color.Green; // error 숫자 열거형 값은 `number`에, 문자열 열거형 값은 `string`에 할당 가능하다. ``` enum MyEnum { Zero, One = 1, Name = '김지혜' } const zero: number = MyEnum.Zero; const one: number = MyEnum.One; const name: string = MyEnum.Name; ```
타입의 호환성 - 제네릭 모든 타입 변수가 어떤 타입인지 알려진 경우 interface NotEmpty { data: T; } let x: NotEmpty; let y: NotEmpty; 어떤 타입인지 알려지지 않은 타입 변수가 있는 경우 const identity = function(x: T): T { // ... }; const reverse = function(y: U): U { // ... }; 이 때, identity와 reverse 함수의 타입에는 타입 변수가 남아 있다. 이럴 때에는 **아직 남아 있는 타입 변수를 모두 `any` 타입으로 대체하고 호환성을 판단**한다. 예를 들어 아래와 같은 할당은 허용된다.