프레임워크 및 라이브러리/Nest.js

Exception filters Nest는 어플리케이션의 모든 처리되지 않은 예외를 처리하는 역할을 하는 예외 층(Exceptions Layer)을 갖고있다. 예외처리는 내장된 전역 예외 필터에 의해 실행되며, HttpException과 자식 클래스에 대한 예외를 처리한다. 만약 예외가 HttpException도 아니고 그 자식클래스도 아니여서 예외를 인식 못 할 때에는 , 내장된 예외 필터가 기본 JSON응답을 만들어 낸다. { "statusCode": 500, "message": "Internal server error" } 표준 예외 발생시키기 Nest는 @nestjs/common 패키지에서 HttpException 클래스를 제공한다. 일반적인 HTTP REST/GraphQL API 기반 어플리케이..
Modules Module은 @Module() 데코레이터가 붙은 클래스이다. @Module() 데코레이터는 Nest가 어플리케이션의 구조를 구성할때 사용하는 메타데이터를 붙여준다. 각 어플케이션은 최소 하나의 루트 모듈을 갖는다. 루트 모듈은 Nest가 모듈, 프로바이더의 관계, 의존성을 만들 때 사용하는 내부 자료구조인 어플리케이션 그래프를 만들 때 시작점으로 사용한다. 모듈은 구성 요소들을 체계화하는 효율적인 방법으로, 대부분의 어플리케이션 아키텍쳐에서는 서로 밀접한 관계에 있는 기능들을 하나의 모듈로 캡슐화 하게 된다. @Module() 데코레이터는 모듈을 정의하는 속성들을 갖는 하나의 객체를 사용한다. 속성 설명 providers Nest Injector에 의해 인스턴스가 만들어지고, 해당 모듈에..
Providers Provider는 의존성 주입(Dependency Injection)을 위한 핵심 요소이다. 객체들이 서로 다양한 관계를 형성할 수 있도록 하고, Nest에게 인스턴스 생성 대부분을 위임할 수 있게 한다. 서비스, 레포지토리, 팩토리, 핼퍼 등 Nest의 기본 클래스들은 프로바이더 이다. Controller는 HTTP 요청을 처리하고, 더 복잡한 작업은 Provider에게 넘겨주어야 한다. 프로바이더는 Module의 Providers 로 정의된 자바스크립트/타입스크립트 클래스이다. 서비스 // cats.service.ts import { Injectable } from '@nestjs/common'; import { Cat } from './interfaces/cat.interface'..
Controllers 컨트롤러는 들어오는 요청을 처리해서 클라이언트에 응답을 반환하는 역할을 한다. 컨트롤러는 어플리케이션으로 들어오는 특정 요청을 받는 목적을 갖고 있다. 일반적으로 각각의 컨트롤러는 하나 이상의 라우트를 가지며, 어느 요청을 받을지 결정하여 동작을 정할수 있다. 라우팅 컨트롤러를 정의할때 필요한 @Controller() 데코레이터를 사용해, 경로를 지정하면 관련된 라우트를 묶을 수 있고, 반복되는 코드를 최소화시킬 수도 있다. // cats.controller.ts import { Controller, Get } from '@nestjs/common'; @Controller('cats') export class CatsController { @Get() findAll(): string..
Nest.js란? Nest.js는 Typescript를 완벽지원하는 효율적이고 확장가능한 Node.js의 서버 어플리케이션 프레임워크로 OOP(Object Oriented Programming), FP(Functional Programming), FRP(Functional Reactive Programming) 요소를 결합하는 특징을 가지고 있다. Express를 기반으로 한 Node.js 어플리케이션을 쉽게 구축할 수 있게 해주며, 모듈화, 의존성 주입 등의 기능을 제공하여 코드를 보다 구조적으로 작성할 수 있다. 기본 컨셉 기본 컨셉은 Provider(Service), Controller를 각 Module로 합치고, 그 각각의 Module을 app.module에 합쳐서 사용하는 것이다. Nest.js..