五 Koa2项目中使用Swagger

一 环境准备

1.首先需要先安装koa2-swagger-ui,以及swagger-jsdoc
2.官方文档:Swagger官方文档

npm install koa2-swagger-ui  //
npm install swagger-jsdoc

二 使用swagger

1.在app.js文件中引入koa2-swagger-ui,并设置swagger的基本配置

const { koaSwagger } = require('koa2-swagger-ui');
app.use(
  koaSwagger({
    routePrefix: '/swagger/index.html', // 这里配置swagger的访问路径
    swaggerOptions: {
      url: '/swagger/swagger.json', // 这里配置swagger的文档配置URL,也就是说,我们展示的API都是通过这个接口生成的。
    },
  }),
);

2.在routes文件夹下创建一个swagger.js的路由文件,然后将这个路由文件应用到app.js中
3.在swagger.js文件中编写一下内容

const router = require('koa-router')()
const path = require('path')
const swaggerJSDoc = require('swagger-jsdoc')  //引入swagger-jsdoc

router.prefix('/swagger')  //设置路由,与app.js中的路由配置保持一致
const swaggerDefinition = {
    info: {
        title: 'Test API',        //文档标题
        version: 'v1',            //版本号
        host: 'localhost:3001',   //服务器地址
        basePath: '/'             //访问地址,有些人喜欢在host:port/api/xxx这种格式,可以在此处配置为/api/.
    }
}
const options = {
    swaggerDefinition,
    //写有注解的router的存放地址, 最好使用path.join(),这里使用物理路径
    apis: [
        path.join(__dirname, "./xxx.js"),
        path.join(__dirname, "./xxx1.js"),
    ]
}
const swaggerSpec = swaggerJSDoc(options)

// 通过路由获取生成的注解文件
router.get('/swagger.json', async function (ctx) {
    ctx.set('Content-Type', 'application/json')
    ctx.body = swaggerSpec
})
module.exports = router

配置完成之后,可以访问http://localhost:3001/swagger/index.html,即可以看到我们的swagger-ui界面。

三 显示接口

1.当swagger-ui可以正常显示以后,就可以配置接口信息了,接口的显示是通过添加注解实现的,在接口的头部添加相关注解就可以将接口显示在swagger-ui中了。
以下是我写的一个新增管理员的注解,注意缩进和空格,缩进和空格错了会导致这个接口无法正常显示

/**
 * @swagger
 * /system_manager/add:
 *    post:
 *      tags:
 *      - system_manager
 *      summary: 新增管理员信息
 *      consumes:
 *        - application/json
 *      parameters:
 *      - name: system_manager
 *        in: body
 *        description: 新增管理员信息
 *        schema:
 *          type: object
 *          required:
 *            - id
 *            - account
 *            - token
 *          properties:
 *            obj:
 *              type: object
 *              required:
 *                - account
 *                - name
 *                - phone
 *                - roleId
 *                - state
 *              description: 新增数据对象
 *              properties:
 *                name:
 *                  type: string
 *                  description: 管理员姓名  
 *                account:
 *                  type: string
 *                  description: 管理员账号
 *                state:
 *                  type: integer
 *                  description: 账号状态    
 *                phone:
 *                  type: string
 *                  description: 管理员联系方式   
 *                roleId:
 *                  type: integer
 *                  description: 管理员角色编码      
 *            account:
 *              type: string
 *              description: 当前登录用户账号
 *            token:
 *              type: string
 *              description: 当前登录用户Token
 *      responses:
 *        200:
 *          description: successful operation
 * */

在这里插入图片描述
根据设置,可以点击Model按钮查看注解。
在这里插入图片描述
注解的设置较多,但是功能很完善,具体请参考官方文档Swagger官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值