nest.js Swagger 자동화

jangdu·2023년 7월 28일
0

nest.js

목록 보기
8/11

nest에서는 express랑 달리 swagger문서를 자동으로 작성해주는 기능을 제공한다.
물론 dto나 데커레이터같은거 써줘야함

일단 nest/swagger 설치하고

$ npm install --save @nestjs/swagger

main.ts에서 bootstrap()에 스웨거설정을 적용한다.

import { NestFactory } from '@nestjs/core';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  const config = new DocumentBuilder()
    .setTitle('Cats example')
    .setDescription('The cats API description')
    .setVersion('1.0')
    .addTag('cats')
    .build();
  const document = SwaggerModule.createDocument(app, config);
  // 'api'는 swagger문서 url
  SwaggerModule.setup('api', app, document);

  await app.listen(3000);
}
bootstrap();

이제 npm run start:dev같은거 쓰면

localhost:3000/api에 접속시 스웨거 문서가 보여진다.

이제 컨트롤러 같은데서 더 정확한 swagger 정보들을 추가하는 식으로 하면 됨

예를 들면,

import { Body, Controller, Get, Param, Post, Query } from '@nestjs/common';
import { ApiOperation, ApiParam, ApiQuery, ApiTags } from '@nestjs/swagger';

// 하나로 묶어주는 거
@ApiTags('shows')
@Controller('api/shows')
export class ShowsController {
  // api 설명
  @ApiOperation({ summary: '공연 내역 전체 조회' })
  @Get()
  getShows() {}

  @ApiOperation({ summary: '공연 검색 내역 조회' })
  // 쿼리 정보 설명
  @ApiQuery({
    name: 'keyword',
    required: true,
    description: '공연 검색 키워드',
  })
  @Get()
  getShowByKeyword(@Query() query) {}

  @ApiOperation({ summary: '공연 상세 조회' })
  // param 정보 설명
  @ApiParam({ name: 'showId', description: '공연 id', required: true })
  @Get(':showId')
  getShowById(@Param() param) {
    console.log(param.id);
  }

  @ApiOperation({ summary: '공연 생성' })
  @Post()
  createShow(@Body() body) {}
}

위 처럼 각 정보들을 대충 적어주면 됨 ㅇㅇ 스웨거 자동으로 생성됨

profile
대충적음 전부 나만 볼래

1개의 댓글

comment-user-thumbnail
2023년 7월 28일

좋은 정보 감사합니다

답글 달기