OpenAPI(Swagger)规范是一种用于描述 RESTful API 的强大定义格式。 Nest 提供了一个专用模块来使用它。
安装
npm安装
npm install --save @nestjs/swagger swagger-ui-express
yarn 安装
yarn add @nestjs/swagger swagger-ui-express
引入
使用 SwaggerModule 类初始化 Swagger
main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';async function bootstrap() {const app = await NestFactory.create(AppModule);const options = new DocumentBuilder().setTitle('User example')//标题.setDescription('The user API description')//文档描述.setVersion('4.0')//文档版本号.addTag('user')//标签名.build();const document = SwaggerModule.createDocument(app,//应用程序实例options//Swagger 选项对象);SwaggerModule.setup('api',//api就是Swagger UI 的挂载路径app,//应用程序实例document//上面已经实例化的文档对象);await app.listen(3000);
}
bootstrap();
访问文档
应用程序运行时,打开浏览器并导航到 http://localhost:3000/api
。 你应该可以看到 Swagger UI
路由参数
SwaggerModule 在路由处理程序中查找所有使用的 @Body() , @Query() 和 @Param() 装饰器来生成 API 文档。该模块利用反射创建相应的模型定义
@Post('add')// [Post请求] 路由:/user/addasync findOne(@Body() param: User) {// 使用userService的add方法return this.userService.add(param)}
基于 User,将创建模块定义:
用@ApiProperty() 装饰器对其进行注释后
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
import { ApiProperty } from '@nestjs/swagger';@Entity()
export class User {@ApiProperty()@PrimaryGeneratedColumn()id: number;@ApiProperty({description: '名称',type: String})@Column()name: string;@ApiProperty({description: '状态',default: '1'})@Column({ default: '1' })status: string;}