전체 글

항상 부족합니다. 목표를 이룰 때 까지 계속 달리겠습니다.
순환 의존성순환 의존성은 두 클래스가 서로를 필요로 할 때 발생합니다. 예를 들어, 클래스 A가 클래스 B를 필요로 하고, 클래스 B도 클래스 A를 필요로 하는 경우입니다. Nest에서는 모듈 간 또는 프로바이더 간에 이러한 순환 의존성이 발생할 수 있습니다. 순환 의존성은 가능하면 피하는 것이 좋지만, 항상 그렇게 할 수는 없습니다. 이러한 경우를 위해 Nest는 두 가지 방법으로 프로바이더 간의 순환 의존성을 해결할 수 있도록 지원합니다. 이 장에서는 forwardRef를 사용하는 방법과, DI 컨테이너에서 ModuleRef 클래스를 통해 프로바이더 인스턴스를 가져오는 방법을 설명합니다. 또한, 모듈 간의 순환 의존성을 해결하는 방법도 설명합니다.경고순환 의존성은 index.ts와 같은 배럴 파일 (..
동적 모듈 (Dynamic modules)모듈 장에서는 Nest 모듈의 기본 개념과 동적 모듈에 대한 간단한 소개를 다룹니다. 이 장에서는 동적 모듈의 주제를 확장하여 설명합니다. 이 장을 마치면 동적 모듈이 무엇이며, 이를 어떻게 그리고 언제 사용해야 하는지를 잘 이해할 수 있게 됩니다.소개문서의 Overview 섹션에 있는 대부분의 애플리케이션 코드 예제는 일반적인, 즉 정적 모듈을 사용합니다. 모듈은 전체 애플리케이션의 모듈화 된 일부로써 함께 동작하는 프로바이더나 컨트롤러 같은 컴포넌트 그룹을 정의합니다. 모듈은 이러한 컴포넌트에 대한 실행 컨텍스트 (또는 스코프)를 제공합니다. 예를 들어, 모듈 안에 정의된 프로바이더는 해당 모듈의 다른 구성원에게는 export 없이도 접근할 수 있습니다. 반면..
커스텀 프로바이더앞선 챕터들에서는 Nest에서의 의존성 주입 (Dependency Injection, DI)의 다양한 측면과 사용 방법에 대해 다루었습니다. 그중 하나는 클래스에 인스턴스 (대개 서비스 프로바이더)를 주입하는 생성자 기반 의존성 주입입니다. 의존성 주입이 Nest의 핵심에 근본적으로 내장되어 있다는 사실은 이제 더 이상 놀랍지 않을 것입니다. 지금까지는 주로 하나의 주요 패턴만 살펴보았지만, 애플리케이션이 복잡해질수록 DI 시스템의 전체 기능을 활용해야 할 필요가 있습니다. 이제 이를 더 자세히 살펴보겠습니다.DI의 기본 원리의존성 주입은 제어의 역전 (Inversion of Control, IoC) 기법 중 하나로, 의존성의 인스턴스 생성을 개발자 코드가 아닌 IoC 컨테이너 (여기서는..
인터셉터인터셉터 (interceptor)는 @Injectable() 데코레이터가 붙은 클래스이며, NestInterceptor 인터페이스를 구현합니다. 인터셉터는 관점 지향 프로그래밍 (AOP) 기법에서 영감을 받은 유용한 기능들을 제공합니다. 이를 통해 다음과 같은 작업이 가능합니다:메서드 실행 전/후에 추가 로직을 바인딩함수에서 반환된 결과를 변환함수에서 던진 예외를 변환기본 함수 동작을 확장특정 조건에 따라 함수 자체를 완전히 대체 (예: 캐싱 목적)기본 사항각 인터셉터는 intercept() 메서드를 구현하며, 이 메서드는 두 개의 인자를 받습니다. 첫 번째 인자는 ExecutionContext 인스턴스이며, 이는 가드에서 사용하는 것과 동일한 객체입니다. ExecutionContext는 Argu..
파이프파이프는 @Injectable() 데코레이터가 적용된 클래스이며, PipeTransform 인터페이스를 구현합니다. 파이프는 일반적으로 두 가지 용도로 사용됩니다:변환 (Transformation): 입력 데이터를 원하는 형태로 변환 (예: 문자열을 정수로 변환)검증 (Validation): 입력 데이터를 평가하고, 유효하면 그대로 통과시키고, 그렇지 않으면 예외를 발생시킴이 두 경우 모두, 파이프는 컨트롤러 라우트 핸들러에서 처리되는 인자에 적용합니다. Nest는 메서드가 호출되기 직전에 파이프를 개입시키며, 파이프는 메서드에 전달될 인자를 받아 이를 처리합니다. 변환 또는 검증 작업은 이 시점에서 수행되며, 그 후 라우트 핸들러는 (필요한 경우 변환된) 인자를 가지고 호출됩니다. Nest는 즉시..
미들웨어미들웨어 (Middleware)는 라우트 핸들러가 호출되기 전에 실행되는 함수입니다. 미들웨어 함수는 요청 (request) 객체, 응답 (response) 객체, 그리고 애플리케이션의 요청-응답 사이클 내에서 다음 미들웨어 함수 (next)에 접근할 수 있습니다. 이 next 함수는 일반적으로 next라는 이름의 변수로 표현됩니다. Nest 미들웨어는 기본적으로 Express 미들웨어와 동일한 방식으로 동작합니다. 다음은 공식 Express 문서에서 설명한 미들웨어의 기능입니다:미들웨어 함수는 다음과 같은 작업을 수행할 수 있습니다:- 어떤 코드든 실행할 수 있다.- 요청 (request) 및 응답 (response) 객체를 수정할 수 있다.- 요청-응답 사이클을 종료할 수 있다.- 스택 내 다..
dev_writer
Always Be Curious