apim-tools

0.5.3 • Public • Published

apim-tools

APIM 平台客户端工具,提供 mock 中间件 和 mock 管理 web界面

如何使用?

安装

npm i apim-tools --save-dev

作为 express 中间件使用

function artProcessor(customOptions) {
    return function (mockData, options, context) {
        const tplOptions = {
            tplDir: customOptions.tplDir || options.tplDir || options.baseDir
        };

        return new Promise((resolve, reject) => {
            if (!isPlainObject(mockData)) {
                return resolve({_data: mockData});
            }

            let tpl = mockData._tpl;
            if (tpl) {
                let tplFile = pathUtil.join(tplOptions.tplDir, tpl);
                let tplData = context.normalizeMockData(mockData);
                context.logger.debug('render art template using data', tplData);

                let result = art(tplFile, tplData);
                return resolve({_data: result});
            }
            else {
                context.logger.error('to render tpl file missing');
                return reject('to render tpl file missing');
            }
        });
    };
}

const apimMw = require('apim-tools').express({
    // express server 使用的端口号
    port: 9090,
    // 设置存储的 mock 相关数据存储的根目录
    root: __dirname + '/mock',
    // 项目 schema token 具体到 apim 平台查看
    schemaToken: 'd79e5fa60c5ed6111b6a06a2f4fcbb6b',
    // 是否启动时候立刻自动同步
    startAutoSync: true,
    // 是否开启注入选项,默认会在页面注入 mock 管理的入口
    injector: true,
    // 自定义 mock,只有不存在接口定义 mock 才走该自定义 mock 规则
    // mock 规则定义同 https://github.com/wuhy/autoresponse
    mockRules: [
        {
            match: '/users/:id',
            method: ['get', 'patch']
        }
    ],
    // 自定义 mock 数据处理器或者选项
    processors: {
        // 使用 smarty 处理器,接口平台定义的页面模板类型选择 Smarty
        smarty: {
            baseDir: __dirname + '/mock'
        },
        // 使用 etpl 处理器,接口平台定义的页面模板类型选择 ETPL
        etpl: {
            tplDir: __dirname + '/templates',
            tplExtName: 'etpl',
            encoding: 'utf-8',
            engine: {
                commandOpen: '{{',
                commandClose: '}}',
                variableOpen: '{%',
                variableClose: '%}'
            },
            filters: { // 默认提供 json_encode 
                myFilter: function (source) {
                    return source;
                }
            }
        },
        // 自定义 art-template 处理器,接口平台定义的页面模板类型选择其它,
        // 默认的处理器名为模板的文件扩展名
        art: artProcessor({
            tplDir: __dirname + '/templates'
        })
    }
});
app.use(apimMw);

API

  • testAPI
const apim = require('apim-tools')({
    root: __dirname + '/mock'
});
let promise = apim.testAPI({
    path: '/api/getUserInfo?uid=22', // 请求路径
    method: 'get', // 请求方法
    body: {}, // body 数据,可选
    envId: 11, // 可选,默认使用配置的环境
});
let expressMw = apim.express;
// ...

访问 mock 管理界面

http://devServer:devPort/apimclient

Package Sidebar

Install

npm i apim-tools

Weekly Downloads

21

Version

0.5.3

License

ISC

Unpacked Size

8.02 MB

Total Files

417

Last publish

Collaborators

  • wuhuiyao
  • xhong