본문 바로가기
반응형

개발 프레임워크/NestJS24

[NestJS] Swagger 문서 모듈 별로 분리 NestJS에서 Swagger 문서를 모듈 별로 분리하여 주소로 나누어 출력하는 방법 2023.02.06 - [개발 프레임워크/NestJS] - [NestJS] Swagger(스웨거)란? [NestJS] Swagger(스웨거)란? NestJS 형상관리 도구_스웨거(Swagger) Swagger(스웨거)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크라 kfdd6630.tistory.com 기본적인 사용 방법 import { NestFactory } from '@nestjs/core'; import { NestExpressApplication } from '@nestjs/platform-express'; impo.. 2023. 2. 14.
[NestJS] 타입 종류_Swagger NestJS 다양한 타입_Swagger에 표시하기 단순 타입 (number, string 등) @ApiProperty({ type: Number, }) age: number; @ApiProperty({ type: String, }) name: string; Arrays(배열) 속성이 배열인 경우 아래와 같이 배열 유형을 수동으로 지정해야 한다. @ApiProperty({ type: [String] }) skills: string[]; 배열의 첫 번째 요소로 유형을 포함하거나(위에 표시된 대로) isArray속성을 true로 설정한다. Circular dependencies(순환 종속성) 클래스 간에 순환 종속성이 있는 경우 지연 함수를 사용하여 SwaggerModule유형 정보를 제공한다. @ApiPro.. 2023. 2. 10.
[NestJS] Type(타입)_Swagger Swagger에서 parameters(매개변수)의 타입 * Parameter(매개변수)의 속성 유형을 명시적으로 설정하려면 type키를 사용한다. @ApiProperty({ type: Number, }) age: number; 물론 명시적으로 타입을 작성하지 않아도 Swagger 모델에 타입이 명시되기는 한다. export class CreateUserDto { @ApiProperty({ type: Number }) name: string; @ApiProperty({}) age: number; @ApiProperty({ type: String }) major: string; } 위와 같은 코드가 있다면 Swagger에서 표시될 때, 해당 Swagger에서 알 수 있듯이 @ApiProperty({}) ag.. 2023. 2. 9.
[NestJS] Parameters(매개변수)_Swagger Swagger에서 parameters(매개변수)의 선언 SwaggerModule은 경로 핸들러에서 모든 @Body(), @Query() 및 @Param() 데코레이터를 검색하여 API 문서를 생성한다. 리플렉션(reflection)을 활용하여 해당 모델 정의를 생성한다. @Post() async create(@Body() createUserDto: CreateUserDto) { this.usersService.create(createUserDto); } 본문 정의를 명시적으로 설정하려면 @ApiBody() 데코레이터(@nestjs/swagger 패키지)를 사용한다. CreateUserDto를 기반으로 다음 모델 정의 Swagger UI가 생성된다. export class CreateUserDto { na.. 2023. 2. 8.
[NestJS] Security(보안) Nestjs에서 사용하는 보안 메커니즘 정의 및 인증 활성화(cookie, oAuth2 등) OpenAPI_Security(보안) 특정 작업에 사용해야 하는 보안 메커니즘을 정의하려면 @ApiSecurity() 데코레이터를 사용한다. @ApiSecurity('basic') @Controller('test') export class TestController {} 애플리케이션을 실행하기 전에 DocumentBuilder를 사용하여 기본 문서에 보안 정의를 추가해야 한다. const options = new DocumentBuilder().addSecurity('basic', { type: 'http', scheme: 'basic', }); 가장 널리 사용되는 인증 기술 중 일부는 내장되어 있다. (예: B.. 2023. 2. 7.
[NestJS] OpenAPI 데코레이터 종류 OpenAPI 데코레이터 종류 모음 사용 가능한 모든 OpenAPI 데코레이터는 핵심 데코레이터와 구별하기 위해 Api 접두사가 있다. import { IsString } from 'class-validator' import { ApiProperty } from '@nestjs/swagger' ... @IsString() @ApiProperty() name: string; ... @IsString() = 문자열(string)인지 판별하는 유효성 검사 데코레이터 (validation)로 class-validator에서 가져와서 사용할 수 있다. @ApiProperty() = 데코레이터는 nestjs/swagger에 자체 내장되어있는 데코레이터이고 type 인자로 해당 데코레이터로 데코레이팅 된 클래스를 넘.. 2023. 2. 7.
[NestJS] OpenAPI OpenAPI란? RESTfulAPI를 설명하는 데 사용되는 언어 독립적인 정의 형식이다. Nest는 데코레이터를 활용하여 이러한 사양을 생성할 수 있는 전용 모듈을 제공한다. NestJS -> OpenAPI 문서 https://swagger.io/specification/ OpenAPI Specification - Version 3.0.3 | Swagger OpenAPI Specification Version 3.1.0 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this docu.. 2023. 2. 7.
[NestJS] 유효성 검증(Validation by class-validator) NestJS에서 Validation(유효성 검증)하기 위한 도구, class-validator ValidationPipe는 강력한 클래스 유효성 검사기 패키지와 선언적 유효성 검사 데코레이터를 사용한다. ValidationPipe는 들어오는 모든 클라이언트 페이로드에 대한 유효성 검사 규칙을 적용하는 편리한 접근방식을 제공한다. -> ex. 특정 규칙은 각 모듈의 로컬 클래스/DTO 선언에서 간단한 주석으로 선언된다. class-validator, class-transformer 내장 Validation Pipe 사용 class-validator사용하기 위한 필요한 종속성 설치 $ npm i --save class-validator class-transformer 패키지의 import import { V.. 2023. 2. 6.
[NestJS] Swagger(스웨거)란? NestJS 형상관리 도구_스웨거(Swagger) Swagger(스웨거)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크라고 설명하지만 쉽게 말하면 Swagger는 API 문서 자동화 도구이다. 1. API 문서를 따로 작성할 필요 없다. 2. 만약에 코드와 API 문서를 따로 관리하게 되면 코드를 수정하였는데 API 문서 최신화를 잊어버려서 다른 팀원들에게 공유된 API 문서가 실제 API와 다른 문제가 발생할 수 있다. -> 스웨거를 사용한다면 NestJS에서 코드를 수정하면서 API 문서를 같이 수정할 수 있다. 3. 다른 장점으로는 Swagger는 API를 테스트할 수 있는 GUI를 제공한다. NestJ.. 2023. 2. 6.
[NestJS] Typescript(타입스크립트) NestJS에서 Typescript의 사용 변수 선언 타입스크립트에서 변수를 선언하는 방식은 다음과 같다. [선언키워드] [변수명]: [타입] 선언키워드: const, let 또는 var로 선언한다. const는 선언 후 재할당이 불가능하며 let과 var는 재할당이 가능하여 값을 바꿀 수 있다. 2023.02.04 - [언어/Javascript] - [js] const, let [js] const, let javascript의 변수 선언 ( const vs let ) javascript에서 변수를 선언하는 방법은 3가지 var, let, const가 있다. 하지만 변수 선언 방식 중 하나인 var는 사용을 지양하기 때문에 아래 코드 블록에는 let으로만 kfdd6630.tistory.com let과 v.. 2023. 2. 5.
반응형