think-joi-router-docs
v0.0.2
Published
thinkjs's router with joi validate and swagger doc.
Downloads
3
Maintainers
Readme
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 = require('think-joi-router-docs');
module.exports = [
//~~~其它中间件,不包括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();
},
},
];