安装依赖
yarn add @nestjs/swagger swagger-ui-express --save
配置
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { DocumentBuilder,SwaggerModule} from '@nestjs/swagger'
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const swaggerOptions = new DocumentBuilder()
.setTitle('文档标题')
.setDescription('描述信息')
.setVersion('0.0.1')
.addBasicAuth() // 鉴权?
.build()
// 创建文档到app服务上
const document = SwaggerModule.createDocument(app,swaggerOptions)
// 创建访问的路径
SwaggerModule.setup('docs',app,document)
await app.listen(3000);
}
bootstrap();
使用
import { Body, Controller, Delete, Get, Param, Post, Put, Query } from '@nestjs/common';
import { ApiBody, ApiParam, ApiQuery, ApiResponse } from '@nestjs/swagger'
@Controller('template')
export class TemplateController {
/**
* get 请求
* localhost:3000/template/?name=123&age=234
*/
@ApiQuery({ name: 'name', required: true })
@ApiQuery({ name: 'role', })
@ApiResponse({
status: 200,
description: "reqeeust ok",
})
@Get()
get(@Query() query): object {
return query
}
/**
* post 请求
* localhost:3000/template/
* {
* "name":123,
* "age":345
* }
*/
@ApiBody({ description: "请填写内容" })
@Post()
post(@Body() body): object {
return body
}
/**
* put 请求
* localhost:3000/template/123
* name在x-www-form-urlencoded 中传
*/
@ApiParam({ name: "id" })
@ApiBody({ description: "请输入id" })
@Put(":id")
put(@Param() { id }, @Body() { name }): string {
return `put id is ${id} - ${name}`
}
/**
* delete 请求
* localhost:3000/template/?id=123
*/
@Delete()
@ApiQuery({ name: 'id', required: true })
delete(@Query() { id }): string {
return `del ${id}`
}
}
访问上面定义好的 http://localhost:3000/docs 就可以看到