当前位置: 代码网 > it编程>编程语言>Javascript > Nest框架中集成使用Swagger示例说明

Nest框架中集成使用Swagger示例说明

2024年05月18日 Javascript 我要评论
swaggerswagger 是一个能够生成、描述、调用和可视化的 restful 风格的 web 服务。主要是对 rest api 接口自动生成接口说明文档。生成的接口文档也是直接在线测试。即在可视

swagger

swagger 是一个能够生成、描述、调用和可视化的 restful 风格的 web 服务。主要是对 rest api 接口自动生成接口说明文档。生成的接口文档也是直接在线测试。即在可视化的web 界面上直接输入参数对应的值就可以在线测试接口。

nest 框架也提供了一个专门用于支持 swagger 规范的模块。

nest 中使用 swagger

安装

首先需要安装所需要的 swagger 包

 npm install --save @nestjs/swagger swagger-ui-express

初始化 swagger

在 nest 项目的 main.ts 文件中,使用 swaggermodule 类初始化 swagger

import { swaggermodule, documentbuilder } from '@nestjs/swagger';
async function bootstrap() {
    const options = new documentbuilder()
    .settitle('api example')
    .setdescription('the api description')
    .setversion('1.0')
    .addtag('api/v1')
    .build();
  const document = swaggermodule.createdocument(app, options);
  swaggermodule.setup('api', app, document);
}
  • documentbuilder : 先new 一个 documentbuilder 实例,主要是为构建符合 openapi规范的基础文档,从以上demo中可以看到可以对 swagger 文档设置标题、描述、版本号、tag的相关属性。
  • createdocument():用于创建文档。该方法主要接收两个参数:一个是 app 应用程序实例,一个是 swagger 选项对象。

创建完文件之后,即可调用 setup 方法。

配置完之后,就可以在运行项目,通过访问 http://localhost:3000/api, 就可以打开 swagger 的可视化界面,其中就会展示所有的接口列表。

接口中使用

所有的配置都已就位,接下来就是将每个接口都配置上 swagger ,以便接口能够展示在可视化 web界面上。

首先需要引用可支持 swagger 的模块

import { apiproperty } from '@nestjs/swagger';

在使用相关支持swagger 的装饰器方法,比如 @apiproperty() 装饰器注释所有的属性。

@apitags('user')
@controller('api/v1/user')
export class usercontroller {
    @post()
    @apicreatedresponse({
    description: 'the record has been successfully created.',
    type: user
    })
    async createuser(@body() userdto:userdto){
      // doing something
    }
}
export class userdto {
    @apiproperty()
    name: string;
    @apiproperty()
    age: number
}

apitags :将控制器附加到特定的标签

@apiresponse():自定义 http 响应

@apiproperty() 为请求指定返回模型,创建 dto 类并使用装饰器注释所有的属性

这样设置之后,运行项目,访问 swagger 可视化界面就可以看到界面,并且在界面上测试该接口。

参考资料:docs.nestjs.cn/9/recipes?i…

以上就是nest框架中集成使用swagger示例说明的详细内容,更多关于nest框架集成swagger的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com