前言:
后端java或者其他语言引入swagger是可以的,当然我们的egg中也是支持引入的,需要引入 egg-swagger-doc 。
实现效果:
官方:入口
实现步骤:
1、安装
cnpm i egg-swagger-doc --save
2、打开 config/plugin.js ,加入下面内容
exports.swaggerdoc = {
enable: true,
package: 'egg-swagger-doc',
};
3、打开 config/config.default.js
const config = exports = {};
config.swaggerdoc = {
dirScanner: './app/controller',
apiInfo: {
title: 'egg-swagger',
description: 'swagger-ui for egg',
version: '1.0.0',
},
schemes: ['http'],
// consumes: ['application/json'],
// produces: ['application/json'],
securityDefinitions: {
// apikey: {
// type: 'apiKey',
// name: 'clientkey',
// in: 'header',
// },
// oauth2: {
// type: 'oauth2',
// tokenUrl: 'http://petstore.swagger.io/oauth/dialog',
// flow: 'password',
// scopes: {
// 'write:access_token': 'write access_token',
// 'read:access_token': 'read access_token',
// },
// },
},
// enableSecurity: false,
// enablevalidate: true,
routerMap: true,
enable: true,
}
到这一步,配置文件已经到位了,现在得加入具体的路由注释了
4、添加模块
5、添加具体方法注释,get请求
async getNoteList(){
}
注释含义:
- @controller 这个便变成一个tag
- @summary 简介
- @description 描述
- @router 就是请求地址
- @request 其实是swagger里面的parames,其中的authorize_login是定义中app/contract的一个object。翻译到swagger就是一个 object的引用。
- @response 响应,其中的baseResponse,同上。
- @consumes 提交到请求的数据格式(即带body的请求,例如post,有效其他无效),如果没有定义,则跟从配置文件设置。如果要多种选择,可以用空格分开,例如 @consumes html/text application/json。
- @product 同上。
6、post请求,注意,这里的参数body后面的 postNoteParams 是需要在contract中定义方法
async postNoteList(){
}
7、新建contract文件夹,新建index.js
index.js内容
module.exports = {
//账户
postAccountParams: {
username: { type: 'string', required: false, description: '账户名' },
password: { type: 'string', required: false, description: '密码' },
role: { type: 'string', required: false, description: '权限' },
phone: { type: 'string', required: false, format: /^1[34578]d{9}$/, description: '电话' },
},
}
8、将默认地址指向 swagger的地址,打开路由文件,如果不指向,地址是:http://localhost:7001/swagger-ui.html
module.exports = app => {
const { router, controller, middleware } = app;
//默认打开swagger
router.redirect('/', '/swagger-ui.html',302);
}
9、打开页面,输入ip+端口号看效果,http://localhost:7001