think-joi-router-docs

0.0.2 • Public • Published

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();
        },
    },
];

test中包含了一个简单的demo,可以作为参考。

Package Sidebar

Install

npm i think-joi-router-docs

Weekly Downloads

0

Version

0.0.2

License

MIT

Unpacked Size

1.11 MB

Total Files

29

Last publish

Collaborators

  • chianquan