라벨이 swagger인 게시물 표시

NestJS Swagger 문서의 Body Element중 배열 타입 적용하기

이미지
해당 글을 사용하기 전에 참고하면 좋은 글 nest js - install & Create Project from Linux or Ubuntu NestJS에 Swagger(스웨거) Document(문서)를 적용 NestJS http로 들어오는 파라메타, 쿼리, Body값들에 대해서 Global Validation Pipe 만들기   Swagger를 이용해서 API문서를 만들다 보면 단일 Class를 한꺼번에 생성하기 위해서 배열로 받아야 하는 상황이 있습니다. 이를 위해서 기존 Class를 배열로 적용하다보면 Swagger에서 다르게 표시되는 경우가 있습니다. 사진1) 한개의 DTO사용 위의 2개의 num, str을 배열 {num : number, str : string}[]로 저장할수 있는 API를 만들도록 하겠습니다. import {   Body,   Controller,   Get,   HttpCode,   HttpStatus,   Post, } from '@nestjs/common'; import { ApiOkResponse, ApiOperation } from '@nestjs/swagger'; import { AppService } from './app.service'; import { CreateManyTest1ArrayDto, CreateOneTest1Dto } from './dto/test1.dto'; @Controller() export class AppController {   constructor(private readonly appService: AppService) {}   @Get()   getHello(): string {     return this.appService.getHello();   }   @Post('element/one')   @ApiOperation({   ...

NestJS Set Password to Swagger Document

이미지
  1. Generate new project $ nest new [project name] copy 2. Install Swagger $ npm i @nestjs/swagger swagger-ui-express copy $ yarn add @nestjs/swagger swagger-ui-express copy 3. Install express-basic-auth $ npm i express-basic-auth copy $ yarn add express-basic-auth copy // ./src/main.ts import { NestFactory } from '@nestjs/core' ; import { DocumentBuilder , SwaggerModule } from '@nestjs/swagger' ; import * as basicAuth from 'express-basic-auth' ; import { AppModule } from './app.module' ; async function bootstrap () { const app = await NestFactory . create ( AppModule ); app . use ( // set a user and password [ '/api-docs' , '/api-docs-json' ], basicAuth ({ challenge : true , users : { admin : 'safepassword' , // [user name] : [password : string] }, }), ); const options = new DocumentBuilder () . setTitle ( 'Set password to Swagg...

NestJS에 Swagger(스웨거) Document(문서)를 적용 - API적용

이미지
 안녕하세요. 이번에는 CRUD를 코드로 작성하면서 동시에 Swagger를 적용해서 Swagger API문서를 작성하도록 하겠습니다. 일단 가장 기본적인 API문서를 만들어보겠습니다. nestjs을 설치시 자동으로 나오는 app모듈중 'app.controller.ts'에서 아래와 같이 코드를 수정합니다. import { Controller , Get } from '@nestjs/common' ; import { ApiResponse , ApiTags } from '@nestjs/swagger' ; import { AppService } from './app.service' ; // ApiTags는 해당 컨트롤러의 Root경로를 입력받습니다. @ ApiTags ( '/' ) @ Controller () export class AppController { constructor ( private readonly appService : AppService ) {} // ApiResponse는 해당 API가 응답 코드에 따른 설명을 작성합니다. @ ApiResponse ({ status : 200 , description : '정상적인 GET응답' , }) @ ApiResponse ({ status : 500 , description : '서버에러 발생시' , }) @ Get () getHello (): string { return this . appService . getHello (); } } ./src/app.controller.ts 웨 코드에서 'ApiTags', 'ApiResponse' 이 2개가 추가 됬다. 이 데코레이션은 해당 Document에 관련 API정보를 보내는 것이다. 그럼 실제 출력을 보자. 그림1) rootUrl:3...

NestJS에 Swagger(스웨거) Document(문서)를 적용

이미지
 이제 본격적으로 Swagger를 이용하여 자동 API Document를 작성하도록 하겠습니다. 기본적으로 nestjs가 설치됬다는 가정하에 진행을 하도록 하겠습니다. 만약 설치방법이 궁금하시면 아래 링크를 참고해 주시기 바랍니다. 링크 : NestJS 설치법 먼저 npm모듈을 설치합니다. npm i @nestjs/swagger swagger-ui-express copy 위 두개의 모듈은 각각 nestjs 지원 및 프런트 화면구성을 위한 swagger모듈 입니다. import { NestFactory } from '@nestjs/core' ; import { DocumentBuilder } from '@nestjs/swagger' ; // DocumentBuilder import import { AppModule } from './app.module' ; async function bootstrap () { const app = await NestFactory . create ( AppModule ); // Swagger Document를 설정 const options = new DocumentBuilder () . setTitle ( 'nest API' ) . setVersion ( '1.0' ) . build (); await app . listen ( 3000 ); } bootstrap (); 위의 코드와 같이 main.ts파일을 수정합니다. 위 코드에서 추가된 것은 DocumentBuilder class이며 이는 API문서를 만들기 위한 준비사항 입니다. 해당 문서의 제목(setTitle), 버전(setVersion) 그리고 빌드(build)를 합니다. import { NestFactory } from '@nestjs/core' ; import { DocumentBuilder...

Swagger(스웨거) Document(문서)가 필요한 이유

이미지
 안녕하세요. 알렉스 입니다. 이번에는 자동으로 문서를 생성해 주는 Swagger를 이용하여 API문서를 만들도록 하겠습니다.  백엔드에서 주요 업무중 하나는 API문서를 만드는 것입니다. 하지만 개발한 API를 다시 문서로 작성하기에는 상당히 많은 시간이 걸립니다. 또한 중간에 API가 변경이 되면 해당부분의 코드를 변경해야하지만 동시에 API문서를 최신화 해줘야 합니다.  위 그림과 같이 백엔드 개발자는 2가지 일을 갖이 처리하게 되는 일이 발생합니다. 그런데 API 개발을 하면서 동시에 문서작업도 가능한 npm모듈이 나오고나서 이러한 작업량이 상당히 줄었습니다.  코딩작업을 하면서 스웨거에 관련된 부분만 조금 추가를 하면 서버를 구동할때 따로 스웨거 API가 배정이 되서 열어볼수 있습니다.  이는 백엔드 개발자만 편한것이 아닌 API문서를 사용하는 모든 사람들한테 큰 도움이 됩니다. 항상 API문서를 최신으로 유지할수 있으며 API에 대해서 조건을 확인하기위해 매번 질문할 필요가 없게 됩니다.  이번은 자동 API 생성기의 필요성에 대해서 설명하고 다음부터 실제 NestJS을 이용하여 Swagger를 적용하도록 하겠습니다. (다음글)