JaveScript/NestJS

·JaveScript/NestJS
Guard란? Guard는 쉽게 말해서  인증(Authentication)과 권한 부여(Authorization)를 처리하는 데 사용됩니다.가드와 CanActivate 인터페이스import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';import { Observable } from 'rxjs';import { AuthService } from './auth.service';@Injectable()export class AuthGuard implements CanActivate { constructor(private readonly authService: AuthService) {} canActivate( context:..
·JaveScript/NestJS
NestJS에서 필터, 미들웨어, 가드, 파이프 등 다양한 기능을 설정할 때, 인스턴스 대신 클래스를 사용하는 것이 더 좋다고 합니다. 1. 인스턴스 대신 클래스를 사용하는 이유메모리 사용량 감소:NestJS는 클래스를 사용하여 인스턴스를 생성할 때, 해당 클래스의 단일 인스턴스를 모듈 전체에서 재사용합니다.인스턴스를 직접 생성하면 각 요청마다 새로운 인스턴스를 생성할 수 있지만, 클래스를 사용하면 싱글톤 패턴에 따라 한 번만 인스턴스화되어 메모리 사용량이 줄어듭니다.성능 최적화:클래스를 통해 생성된 싱글톤 인스턴스는 여러 곳에서 재사용되므로, 인스턴스 생성과 소멸의 오버헤드가 줄어들어 성능이 향상됩니다.일관성 있는 상태 관리:싱글톤 인스턴스를 사용하면 상태를 중앙 집중적으로 관리할 수 있습니다. 이는 ..
·JaveScript/NestJS
미들웨어는 요청과 응답 사이에서 실행되는 함수로, 요청 데이터의 처리, 인증, 로깅, 에러 처리 등 다양한 역할을 수행할 수 있습니다. import { Injectable, NestMiddleware } from '@nestjs/common';import { Request, Response, NextFunction } from 'express';@Injectable()export class LoggerMiddleware implements NestMiddleware { use(req: Request, res: Response, next: NextFunction) { console.log('Request...'); next(); }} 공식문서를 보면 next() 함수도 미들웨어라고 하는 내용..
·JaveScript/NestJS
@Module()은 데코레이터로 주석이 달린 클래스입니다 .@Module() 데코레이터는 메타데이터를 제공하는데, 이는 Nest 구조를 만드는데 도움을 줍니다. 최상단에 Root 모듈(App Module)이 존재합니다.루트 모듈을 통해 애플리케이션 그래프 구조를 구축할 수 있게 되며, 모듈과 공급자 관계 및 종속성 관계를 정의하는데 사용하는 내부 데이터 구조입니다. provider, controllers , services, repository, imports, exports... 다양한 모듈이 있을 수 있습니다.모듈은 기본적으로 공급자(provider)를 캡슐화합니다.모듈에서 내보낸 공급자만이 모듈의 공용 인터페이스로 간주해 사용할 수 있습니다.모든 모듈은 싱글톤 구조이므로 여러 모듈간에 모든 공급자의..
·JaveScript/NestJS
Provider란 Provider는 Nest에서 가장 중요한 개념입니다.기본 Nest 클래스 중 상당수는 service, repository, factory, helpers 등 거의 모든 것이 Provider로 취급될 수 있습니다.Provider의 주요 아이디어는 종속성으로 주입(dependency Injection) 될 수 있다는 것입니다.이는 객체가 서로 다양한 관계를 생성할 수 있으며 이러한 객체를 "연결(wiring up)"하는 기능이 주로 Nest 런타임 시스템에 위임(delegated)될 수 있음을 의미합니다. import { Injectable } from '@nestjs/common';import { Cat } from './interfaces/cat.interface';@Injectabl..
·JaveScript/NestJS
@Body() 데코레이터는 NestJS에서 사용되는 데코레이터로, HTTP 요청의 본문(body)을 가져와서 컨트롤러 메서드의 매개변수로 주입하는 역할을 합니다. 이를 통해 클라이언트가 POST, PUT 등의 요청을 보낼 때 본문에 포함된 데이터를 쉽게 접근할 수 있습니다. import { Controller, Post, Body } from '@nestjs/common';class CreateCatDto { name: string; age: number;}@Controller('cats')export class CatsController { @Post() create(@Body() createCatDto: CreateCatDto) { return `This action adds a new ..
·JaveScript/NestJS
궁금증  controller를 보면 자동으로 object를 json으로 serialize 해준다고 한다.어떻게 하는건지 궁금해졌다. 설명 import { ClassSerializerContextOptions } from './class-serializer.interfaces';import { Observable } from 'rxjs';import { CallHandler, ExecutionContext, NestInterceptor } from '../interfaces';import { ClassTransformOptions } from '../interfaces/external/class-transform-options.interface';import { TransformerPackage } fro..
·JaveScript/NestJS
Main.ts란import { NestFactory } from '@nestjs/core';import { AppModule } from './app.module';async function bootstrap() { const app = await NestFactory.create(AppModule); // 전역 파이프 설정 app.useGlobalPipes(new ValidationPipe()); // 전역 필터 설정 app.useGlobalFilters(new HttpExceptionFilter()); // 전역 인터셉터 설정 app.useGlobalInterceptors(new LoggingInterceptor()); await app.listen(3000);}bootstrap(); ..