当前位置: 首页 > news >正文

【Node.js】自动生成 API 文档

 

目录

1、直接使用swagger-ui-express

2、配合swagger-jsdoc


 

如何在Node.js项目中使用 Swagger 来自动生成 API接口文档,使用生成方式有很多种。本文基于swagger-jsdoc+swagger-ui-express快速实现

1、直接使用swagger-ui-express

// 方便来浏览和测试api
npm i swagger-ui-express
 

 

import { Express } from 'express';
import swaggerUi from 'swagger-ui-express';
const options = {openapi: "3.0.3",info: {title: '文档相关接口',version: '1.0.0',description: 'API documentation using Swagger',},tags: [{name: "develop",description: "开发者站点管理接口",}],paths: {"/develop": {"get": {"tags": ["develop"],"description": "获取文档列表!","responses": {"200": {"description":"返回字符串数组"}}}}}
}
const swaggerInstall = (app: Express) => {app.use('/apidoc',swaggerUi.serve,swaggerUi.setup(options));
};
export { swaggerInstall };

image.png

直接使用配置去生成接口文档,更改接口的时候需要同时去更改配置,会相对麻烦点。这时候就可以使用swagger-jsdoc,通过在接口上面注释信息后,就可以自动更新对应的api接口文档,其本质是通过读取该接口对应的注释,然后再转成对应的配置。

2、配合swagger-jsdoc

  • JSDoc 注释是一种特殊的注释语法,用于为 JavaScript 代码添加文档化和类型提示信息。它是基于 JSDoc 规范的一部分,旨在提供一种标准的方式来描述代码的结构、功能和类型信息

  • 作用:接口文档注释有更新,对应的api文档会同步更新。确保接口变更,配置会同时去更改

npm i swagger-jsdoc
 

 

import { Express } from 'express';
import path from 'path';
import swaggerDoc from 'swagger-jsdoc';
import swaggerUi from 'swagger-ui-express';const swaggerOptions = {swaggerDefinition: {info: {title: '文档相关接口',version: '1.0.0',description: 'API documentation using Swagger',},},apis: [path.join(__dirname, './routes/*.ts')], // 指定包含 API 路由的文件或文件夹路径
};
const swaggerInstall = (app: Express) => {app.use('/apidoc',swaggerUi.serve,swaggerUi.setup(swaggerDoc(swaggerOptions)));
};
export { swaggerInstall };
 

 

//在对应的接口,注释对应的文档
import express from 'express';
import {developGetFile,developGetFileList,
} from '../controllers/developControllers';
const router = express.Router();
/*** @openapi* /develop:*   get:*     tags: [develop]*     description: 获取文档列表!*     responses:*       200:*         description: 返回字符串数组.*/
router.get('/', developGetFileList);

 

http://www.lryc.cn/news/307607.html

相关文章:

  • 小红书3C家电行业种草营销策略打法,纯干货
  • 防火墙的内容安全
  • Redis 管道详解
  • 【Redis】理论进阶篇------浅谈Redis的缓存穿透和雪崩原理
  • Rocky Linux安装部署Elasticsearch(ELK日志服务器)
  • Linux浅学笔记04
  • 【Day59】代码随想录之动态规划_647回文子串_516最长回文子序列
  • ECLIP
  • STM32 +合宙1.54“ 电子墨水屏(e-paper)驱动显示示例
  • 使用Postman和JMeter进行signature签名
  • uni-app nvue vue3 setup中实现加载webview,解决nvue中获取不到webview实例的问题
  • IPD(集成产品开发)—核心思想
  • uniapp android 原生插件开发-测试流程
  • MyCAT从入门到实战(配置文件介绍)
  • 【LeetCode-300】最长递增子序列(动归)
  • Mysterious-GIF-攻防世界-MISC
  • 【数据结构和算法初阶(C语言)】链表-单链表(手撕详讲单链表增删查改)
  • 【Go语言】Go语言中的切片
  • Qt程序设计-钟表自定义控件实例
  • Redis的发布订阅功能教程,实现实时消息和key过期事件通知功能
  • 4核8g服务器能支持多少人访问?
  • 【Android】切换系统全局语言设置
  • 【递归】【回溯】Leetcode 112. 路径总和 113. 路径总和 II
  • AxureCloud配置文件详细介绍
  • Centos开机网卡自启动失败
  • 华为OD技术面试案例3-2024年
  • 全面升级!Apache HugeGraph 1.2.0版本发布
  • WinCC如何与三菱Q系列PLC进行以太网通讯
  • Spring11、整合Mybatis
  • C语言练习:(力扣645)错误的集合