분류 전체보기

1. Execution contextNest는 여러 컨텍스트(예: Nest HTTP 서버 기반, 마이크로서비스 및 웹소켓 애플리케이션 컨텍스트)에서 작동하는 애플리케이션을 쉽게 작성할 수 있도록 도와주는 여러 유틸리티 클래스를 제공합니다. 이러한 유틸리티는 현재 실행 맥락(execution context)에 대한 정보를 제공하여 더 광범위한 컨트롤러, 메서드 및 실행 컨텍스트에서 동작하는 범용 guard, filter 및 interceptor를 구축하는 데 사용할 수 있습니다. 이번 포스팅에서는 두 개의 클래스를 다룰 것입니다: ArgumentHost & ExecutionContext 1-1. ArgumentHost classArgumentsHost 클래스는 핸들러에 전달되는 인자를 가져오는 ..
1. Configuration애플리케이션은 대개 서로 다른 환경에서 실행됩니다. 그렇기에 환경에 따라 다른 구성 설정을 사용해야 해주어야 하는데요.  예를 들어, 일반적으로 로컬 환경에서는 로컬 DB 인스턴스에만 유효한 특정 데이터베이스 자격 증명에 사용되는 경우가 있습니다. 프로덕션 환경에서는 별도의 DB 자격 증명 세트를 사용합니다. 구성 변수(configuration variables)는 변경되기 때문에 해당 환경에 구성 변수를 저장하는 것이 가장 좋은 방법입니다. 외부에서 정의된 환경 변수는 process.env를 통해 Node.js 내부에서 볼 수 있습니다. 환경 변수를 각 환경에서 개별적으로 설정하여 여러 환경이라 발생할 수 있는 문제를 해결할 수 있습니다. 하지만 이러한 값을 쉽게 ..
1. Custom decoratorsNest는 데코레이터라는 언어 기능을 중심으로 구축되었습니다. 데코레이터는 일반적으로 사용되는 많은 프로그래밍 언어들에서 잘 알려진 개념이지만 자바스크립트 세계에서는 아직까진 비교적 생소한 개념입니다. 데코레이터의 작동 방식을 더 잘 이해하려면 이 글을 읽어보시기 바랍니다.  다음은 데코레이터에 대한 간단한 정의입니다:ES2016 데코레이터는 함수를 반환하고 target, name 및 property descriptor를 인자로 받을 수 있는 표현식입니다. 데코레이터 앞에 '@' 문자를 붙이고 데코레이터를 적용하려는 대상의 맨 위에 배치합니다. 데코레이터는 클래스, 메서드 또는 프로퍼티에 대해 정의할 수 있습니다. 1-1. Param decoratorsNe..
1. PassportPassport는 node.js 인증 라이브러리 중 커뮤니티에서 잘 알려져 있고 많은 운영 단계의 애플리케이션들에서 성공적으로 사용되고 있는 것 중에 하나입니다. 이 라이브러리를 Nest 애플리케이션과 통합하는 방법은 @nestjs/passport 모듈을 사용하는 것입니다. 고수준에서 Passport는 다음과 같은 몇가지 단계들을 실행합니다:'credentials'(예: 사용자 이름/비밀번호, JWT(JSON 웹 토큰) 또는 ID 공급자의 ID 토큰)을 확인하여 사용자를 인증합니다.인증 상태 관리(JWT와 같은 휴대용 토큰을 발급하거나 Express 세션을 생성함을 통해 관리)라우트 핸들러에서 추가 사용을 위해 인증된 사용자에 대한 정보를 Request 객체에 첨부합니다...
1. 트랜잭션 with NestJS & TypeORM 데이터베이스 트랜잭션(Database Transaction)은 DBMS(Database Management System)내에서 수행되는 작업의 단위를 형상화하고, 다른 트랜잭션들과 독립되어 일관적이고 안전한 방식으로 처리되도록 하는 기술입니다. TypeORM에는 트랜잭션을 다루는 몇가지 다른 전략들이 존재합니다. 공식문서에서는 QueryRunner 클래스가 트랜잭션에 대한 완전한 제어를 할 수 있기 때문에 이를 사용할 것을 권장하고 있습니다. 먼저 우리는 일반적인 방식으로 클래스에 DataSource 객체를 주입해줍니다. @Injectable() export class UsersService { constructor(private dataSource:..
이번 포스팅은 Interceptor의 개념을 알고 있는 상태여야 이해하기가 쉬운 내용이 포함되어 있습니다. Interceptor에 대한 설명은 다음 링크를 참고해주세요.  [NestJS] Interceptor 개념정리 (+간단한 Logger)1. Interceptors란? 통상적으로 interceptor는 요청과 응답을 가로채서 중간에 로직에 변화를 줄 수 있도록 하는 컴포넌트를 말합니다. Nest에서는 이를 @Injectable() 데코레이터가 붙은 클래스를 통해 만들cdragon.tistory.com 1. Logging1-1. LoggerNest는 내장된 텍스트 기반의 logger를 가지고 있는데, 이는 애플리케이션 부팅 중에 사용되며 잡은 예외를 보여주는 일부 다른 환경들에서..
1. Guardsguard는 NestJS에서 @Injectable() 데코레이터가 붙은 클래스로 CanActivate 인터페이스를 구현합니다. 이 친구도 역시 단일 책임을 갖는데요. 런타임에 존재하는 특정 조건(permissions, roles, ACL 등)에 따라 특정 요청이 라우트 핸들러에 의해 처리될지 여부를 결정하는 책임을 갖습니다. 이는 일반적으로 authorization을 처리하기 위해 사용합니다.  권한부여-authorization(그리고 일반적으로 함께 사용되는 사촌격인 authentication)는 일반적으로 기존 Express 애플리케이션의 미들웨어가 처리해 왔습니다. 토큰 유효성 검사(token validation) 및 요청 객체에 속성을 추가하는 작업은 특정 route 컨..
Nest는 데이터베이스에 구애받지 않기 때문에 모든 SQL 혹은 NoSQL 데이터베이스들과 쉽게 통합할 수 있습니다. 개인 선호도에 따라 다양한 선택지를 선택할 수 있지만 저는 이 포스팅에서 MySQL을 Nest에서 어떻게 구성하는지에 대해서 글을 써보도록 할 것입니다. 가장 일반적인 경우에 Nest를 데이터베이스와 연결시키기 위해선 Express나 Fastify를 사용할 때와 마찬가지로 단순히 그 데이터베이스에 적합한 Node.js 드라이버를 불러와야 합니다. 혹은 더 높은 수준의 추상화로 동작하기 위해서 MikroORM, Sequalize, Knex.s, TypeORM, Prisma 등의 범용 Node.js 통합 라이브러리나 ORM을 직접 사용할 수도 있는데 이 중에서 TypeORM을 사용해볼 것입니..
1. Validation (검증) 웹 애플리케이션에서는 전달되는 모든 데이터의 정확성을 검증하는 것이 가장 좋은 시나리오일 것입니다. 그래서 들어오는 요청이 유효한지를 자동으로 검사하기 위해 Nest는 바로 사용할 수 있는 몇 가지의 내장 기본 pipes를 제공하고 있습니다. ValidationPipe ParseIntPipe ParseBoolPipe ParseArrayPipe ParseUUIDPipe 이러한 ValidationPipe는 강력한 class-validiator 패키지와 선언적인 validation 데코레이터를 사용합니다. ValidationPipe는 모든 들어오는 클라이언트의 페이로드(payload)에 대한 검증 규칙을 강화하기 위해 간편한 접근을 제공합니다. 그 구체적인 규칙은 local ..
1. Pipes란?Pipe는 Nest에서 PipeTransform 인터페이스를 구현하는 클래스이며 이 클래스 역시 @Injectable() 데코레이터가 붙습니다.   pipe는 두 가지의 전형적인 사용 사례를 갖습니다.transformation(변환): 입력 데이터를 원하는 형태로 변환합니다. (e.g., 문자열에서 정수형 변환)validation(검증): 입력 데이터를 검증하고 만약 통과되면 그 값을 바꾸지 않고 그대로 보내고, 검증에 실패하면 예외를 발생시킵니다. 두 경우 모두에서 Pipe는 컨트롤러 라우트 핸들러가 처리 중인 인수를 대상으로 작동합니다. Nest는 메서드(핸들러)가 호출되기 직전에 pipe를 삽입하고, pipe는 메서드로 전달되는 인수를 받아 이를 대상으로..
cdragon
'분류 전체보기' 카테고리의 글 목록 (2 Page)