Nodejs+express后端服务接入swagger

20 篇 辗转来到nodejs了,nodejs+express+swagger

背景:使用nodejs搭建了一个后端服务,暴露出的接口需要提供接口文档。选择并使用swagger,并通过注释的方式编写swagger文档。

接入swagger没有技术难度,只需要熟读API即可完成。更详细的配置还需要阅读swagger API进行获取,下面列举具体的接入过程:

1. 安装swagger-jsdoc

npm i swagger-jsdoc

2. swagger-jsdoc配置文件

新建用于swagger配置的文件,配置的内容包括:

const path = require('path')
const express = require('express')
const swaggerUI = require('swagger-ui-express')
const swaggerDoc = require('swagger-jsdoc')

// swaggger-jsdoc配置
const options = {
    definition: {
        openapi: '3.1.0',
        info: {
            title: 'nodejs-server',
            version: 'V1.0.0',
            decription: 'This is a nodejs server',
            contact: {
                name: 'name',
                url: 'url',
            },
        },
        servers: [
            {
              url: 'xxx',
              description: 'server url',
            }
          ],
    },
    // 去哪个路由下收集swagger
    apis: [path.join(__dirname, '../../router/*.js')]
}

let swaggerSpec = swaggerDoc(options)

let swaggerJSON = function(req, res) {
    res.setHeader('Content-Type', 'application/json')
    res.send(swaggerSpec)
}

let swaggerInstall = function(app) {
    if(!app) {
        app = express()
    }
    // 开放接口
    app.get('/nodejs-server/swagger.json', swaggerJSON)
    // 使用swaggerSpec生成swagger文档页面,并开放在指定路由
    app.use('/nodejs-server/swagger', swaggerUI.serve, swaggerUI.setup(swaggerSpec))
}

module.exports = swaggerInstall

3. 执行swaggerInstall

在nodejs服务的入口文件index.js中,引入swagger配置文件,并执行swaggerInstall。

const swaggerInstall = require('./utils/swagger/index')
swaggerInstall(app)

4. 添加注释

如,测试服务连接的接口,可配置如下内容:

/**
     * @swagger
     * /nodejs-server/:   #路由地址
     *    get:
     *      tags: 
     *      - controller    #接口分类
     *      summary: 测试服务器连接   #接口备注
     *      description: 测试服务器连接   #接口描述
     *      consumes:
     *      - "application/json"    #接口接收参数方式
     *      requestBody:    #编写参数接收体
     *          required: true  #是否必传
     *          content:
     *              application/json:
     *                  schema:     #参数备注
     *                      type: object    #参数类型
     *                      properties:
     *                          username:
     *                                  type: string    #参数类型
     *                                  description: 用户名     #参数描述
     *                          password:
     *                                  type: string    #参数类型
     *                                  description: 密码     #参数描述
     *                  example:        #请求参数样例。
     *                      username: "string"
     *                      password: "string"
     *      responses:  #编写返回体
     *        200:     #返回code码
     *          description: 获取成功     #返回code码描述
     *          content:
     *              application/json:
     *                  schema:
     *                      type: object
     *                      properties:
     *                          code:   #返回的code码
     *                              type: string
     *                              description: 返回code码
     *                          msg:    #返回体信息。***注意写的位置一定要和res_code对齐。
     *                               type: string   #返回体信息类型
     *                               description: 返回信息
     *                          data:
     *                                type: object
     *                                description: 返回数据
     *        -1:
     *          description: 注册失败
     * */

5. 启动服务,运行swagger

swagger启动端口使用nodejs监听的端口即可。效果如下图:

在这里插入图片描述

😒工不好打,总有一些人想让你前后端一起,贼人之心不死啊!没逃过,惨了/(ㄒoㄒ)/~~ 好惨的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们在使用Node.jsExpress框架进行接口调用时,有时会遇到“Maximum call stack size exceeded”错误。这个错误通常是由于递归调用函数或无限循环调用函数导致的。以下是一些可能导致这个错误的原因和解决方法: 1. 递归调用函数:如果你的代码中有递归调用函数,那么可能会导致这个错误。你可以通过检查你的代码并确保递归调用函数的退出条件正确来解决这个问题。 2. 无限循环调用函数:如果你的代码中有无限循环调用函数,那么也可能会导致这个错误。你可以通过检查你的代码并确保循环调用函数的退出条件正确来解决这个问题。 3. 调用栈溢出:如果你的代码中有大量的函数调用,那么可能会导致调用栈溢出。你可以通过增加Node.js的调用栈大小来解决这个问题。你可以在启动Node.js应用程序时使用--stack-size标志来增加调用栈大小,例如: ```shell node --stack-size=10000 app.js ``` 这将增加调用栈大小到10000。 4. 代码错误:如果你的代码中有其他错误,例如死循环或无限递归,那么也可能会导致这个错误。你可以通过检查你的代码并修复错误来解决这个问题。 5. 内存泄漏:如果你的代码中有内存泄漏,那么也可能会导致这个错误。你可以通过使用Node.js的内存分析工具来检查内存泄漏并修复它们来解决这个问题。 以下是一个可能导致“Maximum call stack size exceeded”错误的示例代码: ```javascript function foo() { foo(); } foo(); ``` 这个代码中的函数foo()会无限递归调用自己,最终导致调用栈溢出并抛出“Maximum call stack size exceeded”错误。要解决这个问题,我们需要添加退出条件,例如: ```javascript function foo(count) { if (count > 1000) { return; } foo(count + 1); } foo(0); ``` 这个代码中的函数foo()会递归调用自己,但是添加了退出条件,当count大于1000时,函数将不再递归调用自己,从而避免了调用栈溢出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值