Nest Swagger 1. 사용 방법 [ 세팅, summary 생성, property 생성 ]
2022. 4. 20. 15:54ㆍNest.js
1. 설치
2. 첫 swagger 세팅
3. api summary, property생성
1. 설치
npm install --save @nestjs/swagger swagger-ui-express
2. 첫 세팅
main.ts에서
bootstrap() 함수에 swagger를 추가 해준다.
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('Swagger 타이틀')
.setDescription('Swagger description')
.setVersion('서버 버전')
.build();
const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup('api', app, document);
await app.listen(3000);
}
bootstrap();
그러면 nest가 자동으로 controller과 DTO 분석해서
Api를 가져와 보여준다.
3. api summary, response, property 생성 (선택 사항)
2. 에서 만들어진 swagger를 보면 상세한 설명, response값을 몰라 이용하는 개발자가 헷갈리거나 귀찮을 수 있다.
그래서 api대한 설명을 위해 api summary 와 property api 결과값과 타입을 알수있게 api response을 넣어준다.
설명 :
1. Controller에서 summary와 response를 만든다.
2. DTO에서 필요한 property 예시를 만든다.
import 방법 :
summary : swagger 의 ApiOperation을 import
property : swagger의 ApiProperty를 import
summary 적용
//users.controller.ts
import { UsersService } from './users.service';
import { Controller, Post, Put, Get, Param, Body } from '@nestjs/common';
import {
FindUserIdDto,
FindUserCheckDto,
PasswordChangeDto,
} from './users.dto';
import { ApiOperation, ApiResponse } from '@nestjs/swagger';
@Controller('users')
export class UsersController {
constructor(private readonly userService: UsersService) {}
@ApiOperation({ summary: '핸드폰 번호로 아이디 찾기' })
@Get(':hp')
async findUserId(@Param() param: FindUserIdDto) {
return await this.userService.findUserId(param);
}
@ApiOperation({ summary: '핸드폰번호, 아이디로 유저 존재 확인' })
@Post('check')
async findUserCheck(@Body() body: FindUserCheckDto) {
return await this.userService.findUserCheck(body);
}
@ApiOperation({ summary: '비밀번호 변경' })
@Put('password')
async passwordChange(@Body() body: PasswordChangeDto) {
return await this.userService.passwordChange(body);
}
}
property 적용
///users.dto.ts
// import { MainGame } from '../model/main.model';
import { IsNotEmpty, IsString } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';
export class FindUserIdDto {
@ApiProperty({
example: '010554654656',
description: 'hp',
required: true,
})
@IsNotEmpty()
@IsString()
hp: string;
}
export class FindUserCheckDto {
@ApiProperty({
example: 'testid',
description: 'id',
required: true,
})
@IsNotEmpty()
@IsString()
id: string;
@ApiProperty({
example: '010554654656',
description: 'hp',
required: true,
})
@IsNotEmpty()
@IsString()
hp: string;
}
export class PasswordChangeDto {
@ApiProperty({
example: 'testid',
description: 'id',
required: true,
})
@IsNotEmpty()
@IsString()
id: string;
@ApiProperty({
example: 'pwd!qwe',
description: 'pwd',
required: true,
})
@IsNotEmpty()
@IsString()
pwd: string;
}
변경 이후
728x90
반응형
'Nest.js' 카테고리의 다른 글
Nest Swagger 3. [ Response 생성] (0) | 2022.04.21 |
---|---|
Nest Swagger 2. Swagger 사용 방법 [ 비밀번호 생성 ] (0) | 2022.04.20 |
Nest DTO 설정 방법 (0) | 2022.04.20 |
Nest Mongoose _id 인덱스 속성 명칭 변경 방법 (0) | 2022.04.19 |
Nest Mongoose DB 스키마(DB 모델) 생성 (0) | 2022.04.19 |