think-joi-router-docs
这个中间件是基于 o2team/koa-joi-router-docs
在think.js中使用该中间件需要 同时移除payload router 和 logic 中间件,因为这个中间件同时包含了body解析、路由和参数校验功能。
Install
# use npm npm install think-joi-router-docs --save# use yarn yarn add think-joi-router-docs
2、移除config/middleware.js中的 payload router logic 中间件。
3、添加think-joi-router-docs中间件
const thinkJoiRouterDocsMiddleware = ;moduleexports = //~~~其它中间件,不包括payload、router、logic handle: thinkJoiRouterDocsMiddleware options: showDocs: true//是否挂载swagger文档接口 docPath: '/api_docs'//swagger文档跟目录 docSpec: //swagger文档全局相关信息 info: title: 'Example API' description: 'API for creating and editing examples.' version: '1.1' basePath: '/' 'controller';
4、增加config/router.joi.js文件,所以路由信息和校验信息存放文件。
const Joi = require('think-joi-router-docs').Joi;//这里建议使用组件提供的joi,方便匹配。
module.exports = [
{
method: 'get',//路遥方法
path: '/hello/test',//路由路径
validate: {//验证相关信息 包含header、query、body、output等,可以参考[koajs/joi-router](https://github.com/koajs/joi-router)
query: {
name: Joi.string().only('a', 'b').description('ENUM 参数描述'),
},
output: {
200: {
body: {
hello: Joi.string(),
},
},
}
},
controller: 'index',//路由对应控制器,如果没有则不路由到控制器
action: 'test',//控制器对应的方法,default:index
handler:async function(ctx,next){//执行的中间件可以是数组,执行顺序优先于controller
return next();
},
},
];