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({

    summary: '하나의 record를 저장하기 위한 테스트 API. DTO 적용 테스트',

  })

  @ApiOkResponse({

    description: '정상적으로 응답시',

    example: {

      num: 1,

      str: 'test',

    },

  })

  @HttpCode(HttpStatus.ACCEPTED)

  async CreateOneDto(@Body() dto: CreateOneTest1Dto) {

    return dto;

  }


  @Post('element/many')

  @ApiOperation({

    summary: '여러개의 record를 저장하기 위한 테스트 API. DTO 적용 테스트',

  })

  @ApiOkResponse({

    description: '정상적으로 응답시',

    example: [

      {

        num: 1,

        str: 'test1',

      },

      {

        num: 2,

        str: 'test2',

      },

      {

        num: 3,

        str: 'test3',

      },

    ],

  })

  @HttpCode(HttpStatus.ACCEPTED)

  async CreateManyDto(@Body() dto: CreateManyTest1ArrayDto) {

    return dto;

  }

}


위의 코드에서 "CreateManyTest1ArrayDto"는 "CreateOneTest1Dto"를 이용해서 배열로 저장할수 있는 DTO를 만들었다.


"Controller"를 이용해서 아래와 같이 생성할수 있다.


사진2) 기존 Class를 이용해서 배열 Body값으로 받기



해당 코드를 확인하고 싶으면 아래 링크를 참고해 주시기 바랍니다.

gitHub Link : https://github.com/Alex-Choi0/ArrayDto_NestJS_Example






























댓글

이 블로그의 인기 게시물

DAQ로 전압 측정하기-2

Nest JS URL에 있는 쿼리(Query) 읽기

appendChild를 이용하여
  • 늘리기_JavaScript_2번