文檔:https://docs.nestjs.cn/9/recipes?id=swagger
安裝
首先,您必須安裝所需的包:
npm install --save @nestjs/swagger swagger-ui-express
如果你正在使用 fastify
,你必須安裝 fastify-swagger
而不是 swagger-ui-express
:
npm install --save @nestjs/swagger fastify-swagger
在main.ts 註冊swagger
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
// 註冊Swagger
const options = new DocumentBuilder().setTitle('makalo接口文檔').setDescription('描述,。。。').setVersion('1').build();
const document = SwaggerModule.createDocument(app,options);
SwaggerModule.setup('/api-docs',app,document);
訪問
http://localhost:3000/api-docs
現在沒有分組比較亂
使用ApiTags 添加分組
@ApiTags('makalo 分組')
ApiOperation 接口描述
@ApiOperation({summary:"創建makalo的接口",description:"這是一個創建的接口的描述"})
ApiParam 動態參數描述
@ApiParam({name:"id",description:"用戶id",required:true})
ApiQuery 修飾get
@ApiQuery({name:"testGet",description:"bbb"})
ApiProperty 修飾DTO
import { ApiProperty } from '@nestjs/swagger';
export class CreateMakaloDto {
@ApiProperty({ description: "姓名", example: "makalo" })
name: string
@ApiProperty({ description:"年齡", example: "18"})
age: number
}
ApiResponse 自定義返回信息
@ApiResponse({status:403,description:"自定義返回信息"})
ApiBearerAuth jwt token
main.ts 註冊
.addBearerAuth()
例:
const options = new DocumentBuilder().addBearerAuth().setTitle('makalo接口文檔').setDescription('描述,。。。').setVersion('1').build();
控制器中修飾
@ApiBearerAuth()
添加token
測試
其他裝飾器
所有可用的 OpenAPI 裝飾器都有一個 Api
前綴,可以清楚地區分核心裝飾器。 以下是導出的裝飾器的完整列表,以及可以應用裝飾器的級別的名稱。
@ApiOperation() |
Method |
@ApiResponse() |
Method / Controller |
@ApiProduces() |
Method / Controller |
@ApiConsumes() |
Method / Controller |
@ApiBearerAuth() |
Method / Controller |
@ApiOAuth2() |
Method / Controller |
@ApiBasicAuth() |
Method / Controller |
@ApiSecurity() |
Method / Controller |
@ApiExtraModels() |
Method / Controller |
@ApiBody() |
Method |
@ApiParam() |
Method |
@ApiQuery() |
Method |
@ApiHeader() |
Method / Controller |
@ApiExcludeEndpoint() |
Method |
@ApiTags() |
Method / Controller |
@ApiProperty() |
Model |
@ApiPropertyOptional() |
Model |
@ApiHideProperty() |
Model |
@ApiExtension() |
Model |