23_Swagger接口文档

简介: 23_Swagger接口文档

nest.js提供了两个包用来生成Swagger接口文档,文档用于描述Restful API风格的接口

  1. 安装两个包

npm install  @nestjs/swagger swagger-ui-express

  1. 在main.ts里进行文档生成配置
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  app.use(cors());
  // 创建接口文档
  const options = new DocumentBuilder()
    // 设置文档标题
    .setTitle('Coolboost接口文档')
    // 设置文档描述
    .setDescription('描述======>')
    // 设置文档版本
    .setVersion('1.0')
    // 创建文档选项
    .build();
  // 基于app和文档选项生成文档
  const document = SwaggerModule.createDocument(app, options);
  // 定义文档展示路径
  SwaggerModule.setup('api-docs',app,document)
  await app.listen(3000);
}
bootstrap();

访问localhost:3000/api-docs即可看到文档

常用API

  1. ApiTags

用于对API进行分组,方便查看

@ApiTags('登录接口')

  1. ApiOperation

用于描述接口信息,起到提示作用

summary是简要描述,可以直接看到,description是详细描述,需要点开对应标签查看

@ApiOperation({summary: '测试admin',description: '请求该接口需要amdin权限',})

  1. ApiParam

用于需要传递Param参数的场合,在文档中输入参数后会随请求一起带到接口

第一个参数是传递参数的名称,第二个是传递参数的描述,第三个是参数是否为必填

@ApiParam({ name: 'roles', description: '用户权限', required: true })

  1. ApiQuery

使用方法和ApiParam类似,唯一不同的是参数将以query的形式进行传递

第一个参数是传递参数的名称,第二个是传递参数的描述,第三个是参数是否为必填

@ApiQuery({ name: 'roles', description: '用户权限', required: true })

  1. ApiResponse

在文档中写入响应状态,起到提示作用

第一个参数是响应状态码,第二个是描述

@ApiResponse({ status: 403, description: '请求失败' })

  1. ApiProperty

结合DTO使用,可以起到示例传入参数的作用

import { ApiProperty } from '@nestjs/swagger';
import { IsNotEmpty, IsString, Length, IsNumber } from 'class-validator';
export class CreateLoginDto {
  // 1
  @ApiProperty({example:'诺航同学'})
  name: string;
  // 2
  @ApiProperty()
  age: number;
}

如果像1处那样写,文档中的提示为name:诺航同学

如果像2处那样写,文档中的提示为age:string

  1. ApiBearerAuth

向文档中的特定API添加验证信息,请求头会多带一个token。需要现在main.ts里使用验证

import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
const options = new DocumentBuilder()
    .setTitle('Coolboost接口文档')
    .setDescription('描述======>')
    .addBearerAuth()    // 多加这一句
    .setVersion('1.0')
    .build();

接下来在controller中使用即可

import {
  ApiOperation,
  ApiTags,
  ApiParam,
  ApiQuery,
  ApiResponse,
  ApiBearerAuth,
} from '@nestjs/swagger';
@ApiTags('登录接口')
@ApiBearerAuth()  // 在这里使用
@Controller('login')
export class LoginController {
  constructor(private readonly loginService: LoginService) {}
  @Post()
  create(@Body() createLoginDto: CreateLoginDto) {
    return this.loginService.create(createLoginDto);
  }
}

效果如图所示

目录
相关文章
|
JSON Shell API
ThinkPHP5使用Swagger-php接口文档
ThinkPHP5使用Swagger-php接口文档
244 0
|
4月前
|
前端开发 应用服务中间件 nginx
使用swagger和knife4j生成的接口文档在浏览器中输入地址后报404错误
使用swagger和knife4j生成的接口文档在浏览器中输入地址后报404错误
79 0
|
8月前
|
运维 前端开发 JavaScript
Swagger生成接口文档
Swagger生成接口文档
111 0
|
9月前
|
前端开发 数据可视化 Java
Swagger 接口文档 | knife4j 增强方案
Swagger 接口文档 | knife4j 增强方案
125 0
Swagger 接口文档 | knife4j 增强方案
|
9月前
|
JSON Java API
SpringBoot集成Swagger2自动生成API接口文档
SpringBoot集成Swagger2自动生成API接口文档
107 0
|
10月前
|
安全 数据可视化 Java
Swagger 自动生成 Api 文档:简化接口文档编写
自动生成 API 文档的好处不言而喻,它可以提供给你的团队或者外部协作者,方便 API 使用者准确地调用到你的 API。为了降低手动编写文档带来的错误,很多 API 开发者会偏向于寻找一些好的方法来自动生成 API 文档。
Swagger 自动生成 Api 文档:简化接口文档编写
|
10月前
|
前端开发 数据可视化 安全
Spring Boot + vue-element 开发个人博客项目实战教程(十、调试、密码加密和Swagger接口文档)(下)
Spring Boot + vue-element 开发个人博客项目实战教程(十、调试、密码加密和Swagger接口文档)(下)
115 0
|
10月前
|
存储 SQL Java
Spring Boot + vue-element 开发个人博客项目实战教程(十、调试、密码加密和Swagger接口文档)(上)
Spring Boot + vue-element 开发个人博客项目实战教程(十、调试、密码加密和Swagger接口文档)(上)
68 1
|
11月前
|
SpringCloudAlibaba 前端开发 Java
SpringCloud Alibaba微服务实战十一 - Swagger接口文档聚合
SpringCloud Alibaba微服务实战十一 - Swagger接口文档聚合
421 0
|
缓存 搜索推荐 前端开发
【笑小枫的SpringBoot系列】【二】基于swagger2的knife4j接口文档
【笑小枫的SpringBoot系列】【二】基于swagger2的knife4j接口文档
177 0