반응형

재학습/NestJS 12

[NestJS] [데코레이터] 속성 데코레이터

속성 데코레이터 클래스의 속성 바로 앞에 선언 선언파일 선언클래스에서는 사용하지 못함 특징 두 개의 인수를 가지는 함수이다. 정적 멤버가 속한 클래스의 생성자함수이거나 인스턴스 멤버에 대한 클래스의 프로토타입 멤버의 이름 메서드 데커레이터, 접근자 데커레이터와 비교해 볼 때 속성 설명자가 존재하지않다는 특징이 있음 반환값 무시됨 구현 export class PropertyDecorationTest { @format('Hello') greeting: string; } function format(formatString: string) { return function (target: any, propertyKey: string): any { let value = target[propertyKey]; func..

재학습/NestJS 2023.06.22

[NestJS] [데코레이터] 매개변수 데코레이터

매개변수 데코레이터 생성자 또는 메서드의 매개변수에 선언되어 적용 선언파일 선언클래스에서는 사용될 수 없다 반환값 무시 호출시 3개의 인수와 함께 호출됨 정적멤버가 속한 클래스의 생성자 함수이거나 인스턴스멤버에 대한 클래스의 프로토타입 멤버의 이름 매개변수가 함수에서 몇 번째 위치에 선언되었는지를 나타내는 인덱스 구현 import { BadRequestException } from '@nestjs/common'; export class ParameterDecorationTest { private name: string; @Validate setName(@MinLength(3) name: string) { this.name = name; } } function MinLength(min: number) { ..

재학습/NestJS 2023.06.21

[NestJS] [데코레이터] 접근자 데코레이터

접근자 데코레이터 접근자 바로 앞에 선언 접근자의 속성 설명자에 적용 접근자의 정의를 읽거나 수정할 수 있음 선언파일과 선언클래스에는 사용할 수 없음 반환값은 해당 멤버의 속성 설명자 구현 특정 멤버가 열거가 가능한지 결정하는 데코레이터 export class AccessorDecorationTest { constructor(private name: string) {} @Enumerable(true) get getName() { return this.getName; } @Enumerable(false) set setName(name: string) { this.name = name; } } function Enumerable(enumerable: boolean) { return function ( tar..

재학습/NestJS 2023.06.20

[NestJS] [데코레이터] 메서드 데코레이터

메서드 데코레이터 메서드 바로 앞에 선언 메서드의 속성 설명자(Property Descriptor)에 적용된다. 메서드의 정의를 읽거나 수정할 수 있다. 선언파일, 오버로드메소드, 선언클래스에는 사용할 수 없다. 메서드속성설명자(Property Descriptor)란? 객체속성의 특성을 기술한다. (속성의 정의를 수정할수있는지 여부, 열거형인지 여부, 속성 값, 수정가능여부, getter, setter) 메서드 데코레이터는, 세 개의 인수를 가진다. target: any, propertyKey: string, descriptor: PropertyDescriptor 정적 멤버가 속한 클래스의 생성자 함수이거나, 인스턴스 멤버에 대한 클래스의 프로토타입 멤버의 이름 멤버의 속성설명자(Property Desc..

재학습/NestJS 2023.06.19

[NestJS] [데코레이터] 클래스 데코레이터

클래스 데코레이터 클래스 바로 앞에 선언 클래스의 생성자에 적용 클래스의 정의를 읽거나 수정 가능 선언파일과 선언클래스내에서는 사용불가능 구현 @reportableClassDecorator export class ClassDecorationTest { type = 'report'; title: string; constructor(t: string) { this.title = t; } } function reportableClassDecorator( constructor: T ) { return class extends constructor { reportingURL = 'http://www.example.com'; }; } 클래스데커레이터는 생성자를 리턴하는 함수다. 결과 reportingURL은 선언해..

재학습/NestJS 2023.06.18

[NestJS] [데코레이터]

데코레이터 개념 횡단관심사를 분리하여 관점지향 프로그래밍을 할 수 있도록 해주는 기능 자바의 애너테이션과 유사함 @키워드를 붙여 사용 DTO검증뿐만아니라 다양한곳에 활용 가능 데코레이터 합성 각 데코레이터 표현은 위에서 아래로 평가된다. 결과는 아래에서 위로 함수로 호출된다. export class DecoCompositionTest { @first() @second() method() { console.log('method is called'); } } function first() { console.log('first() : factory evaluated'); return function ( target: any, propertyKey: string, descriptor: PropertyDescri..

재학습/NestJS 2023.06.17

[NestJS] Swagger 적용( 과 Swagger -> Redoc으로 변경..은 하려고하였으나~~ )

NestJS 애플리케이션에서 ReDoc을 사용하려면 NestJS용 Swagger(OpenAPI) 사양과의 통합을 제공하는 @nestjs/swagger 패키지를 설치해야 함 npm install @nestjs/swagger NestJS 애플리케이션에서 swagger.options.ts 파일을 만들고 OpenAPI 사양을 정의 여기에는 API 끝점, 요청 및 응답 본문 및 기타 관련 세부 정보에 대한 정보가 포함되어야 함 main.ts 파일 내에서 설정을 잡아줘야 함 이 파일에서 @nestjs/swagger에서 SwaggerModule을 가져오고 이를 사용하여 애플리케이션에서 Swagger를 활성화 import { DocumentBuilder, SwaggerModule } from '@nestjs/swagg..

재학습/NestJS 2023.01.08

[NestJS] Swagger vs Redoc

둘 다 API 문서 생성에 널리 사용되는 도구이다. Swagger 장점 널리 사용되고 잘 알려진 도구 대규모 사용자 커뮤니티가 있으므로 사용 가능한 지원 및 리소스가 많다. 여러 프로그래밍 언어 및 프레임워크 지원 개발자가 API 끝점을 쉽게 보고 테스트할 수 있는 사용자 친화적인 인터페이스가 있다. 단점 일부 사용자는 인터페이스가 복잡하고 탐색하기 어렵다고 생각. 생성된 문서의 모양을 사용자 지정하기 어려울 수 있음 오픈 소스 버전에서 모든 기능을 사용할 수 있는 것은 아님 Redoc 장점 깨끗하고 직관적인 인터페이스 생성된 문서를 광범위하게 사용자 정의 가능 OpenAPI 3.0 사양 지원 모바일 장치에서 잘 작동하는 반응형 디자인 단점 Swagger만큼 널리 사용되지 않으므로 사용 가능한 지원 및 ..

재학습/NestJS 2023.01.08

[NestJS] Dependency Injection & Generate Module

Dependency Injection Moudle에 @Module로 Controller와 Service를 지정 Controller에 Service를 Constructor에 타입을 지정하여 인수로 받으면 Dependency Injection을 통해 자동 주입 앱모듈에서 Module데코레이터 하위의 - Controller에는 AppController만 - Provider에는 AppService만 있어야한다 - 나머지는 모듈화 시켜서 imports에 추가시켜줘야 함. AppModule (추가) AppModule에 AppController와 AppService 추가하기위한 Generate 수행 nest generate controller app nest generate provider app 모듈 추가 또한, ..

재학습/NestJS 2022.12.14

[NestJS] DTO Validation Check & PartialType

NestJS로도 DTO Validation 체크가 가능하다 CreateDTO와 필드는 같지만, CreateDTO와 달리 모든 필드가 필수요소가 아닌 경우 PartialType으로 부분타입구현이 가능하다. - ex) UpdateDTO Pipe 유효성 검사용 파이프 미들웨어 install npm install class-validator class-transformer 2. main.ts > app.useGlobalPipes(new ValidationPipe()); import { ValidationPipe } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; as..

재학습/NestJS 2022.12.12
반응형