node express自动生成swagger(openApi)接口文档
Posted wiliam_new
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node express自动生成swagger(openApi)接口文档相关的知识,希望对你有一定的参考价值。
先看效果图:
实现步骤:
1. 安装所需的包
npm install swagger-jsdoc swagger-ui-express
2. 新建文件 swagger.js
// swagger在线网站:https://editor.swagger.io/# const swaggerJSDoc = require(\'swagger-jsdoc\') const swaggerUi = require(\'swagger-ui-express\') const path = require(\'path\') const swaggerInit = (app, baseUrl) => //options是swaggerJSDoc的配置项 const options = swagger: \'2.0\', //definition是swagger的配置项 definition: info: title: \'Node Swagger API\', version: \'1.0.0\', description: \'Demonstrating how to describe a RESTful API with Swagger\', , , // 重点,指定 swagger-jsdoc 去哪个路由下收集 swagger 注释 apis: [path.join(process.cwd(), \'/routes/*.js\')], const swaggerSpec = swaggerJSDoc(options) // 可以访问 xxx/swagger.json 看到生成的swaggerJSDoc app.get(\'/swagger.json\', function (req, res) res.setHeader(\'Content-Type\', \'application/json\') res.send(swaggerSpec) ) // 可以访问 xxx/api-docs 看到生成的swagger接口文档 app.use(\'/api-docs\', swaggerUi.serve, swaggerUi.setup(swaggerSpec)) module.exports = swaggerInit
3. 在app.js中引入swagger.js文件
const app = express() //swagger imports //这里填你的swagger文件所在路径 const swaggerInit = require(\'./swagger.js\') swaggerInit(app)
4. 写一个swagger格式的接口
const express = require(\'express\') const router = express.Router() /** * @swagger * /api/getPetList: * get: * tags: * - pet * description: Multiple name values can be provided with comma separated strings * parameters: * - name: name * in: query * description: name values that need to be considered for filter * required: false * responses: * \'200\': * description: successful operation * \'400\': * description: Invalid name value */ router.get(\'/api/getPetList\', (req, res, next) => const query = req res.send( status: 200, data:[], msg: \'请求成功\', ) ) module.exports = router
大功告成!现在你可以通过访问 http://IP:端口/api-docs/ 得到一开始的效果图了。
附上其它请求方式的swagger写法:
/** * @swagger * definitions: * Pet: * properties: * name: * type: string * age: * type: integer * sex: * type: string */ /** * @swagger * /api/petAdd: * post: * tags: * - pet * description: Creates a new pet * produces: * - application/json * parameters: * - name: pet * description: pet object * in: body * required: true * schema: * $ref: \'#/definitions/Pet\' * responses: * 200: * description: Successfully created */ router.post(\'/api/petAdd\', (req, res, next) => const query = req res.send( status: 200, data: true, msg: \'请求成功\', ) ) /** * @swagger * /api/puppies/id: * put: * tags: * - pet * description: Updates a single pet * produces: * - application/json * parameters: * - name: pet * description: Fields for the pet resource * in: body * schema: * type: array * $ref: \'#/definitions/Pet\' * responses: * 200: * description: Successfully updated */ router.put(\'/api/petEdit\', (req, res, next) => const query = req res.send( status: 200, data: true, msg: \'请求成功\', ) ) /** * @swagger * /api/petDelete: * delete: * tags: * - pet * description: Deletes a single pet * produces: * - application/json * parameters: * - name: id * description: pet\'s id * in: path * required: true * type: integer * responses: * 200: * description: Successfully deleted */ router.put(\'/api/petDelete\', (req, res, next) => const query = req res.send( status: 200, data: true, msg: \'请求成功\', ) )
自律使我自由
以上是关于node express自动生成swagger(openApi)接口文档的主要内容,如果未能解决你的问题,请参考以下文章
如何从基于 TypeScript 的 Express 应用程序生成 swagger API 文档?