swagger-to-service

0.9.8 • Public • Published

swagger-to-service

Convert API definitions to source code files of api/service/ut. Support user defined plugins via Tapable.

install

yarn add swagger-to-service --dev

usage

const sts = require('swagger-to-service')
 
sts({
    url: 'http://yaml/server/test.yaml', // yaml uri
    apiPath: './out/api.js', // dist dir of api file
    servicePath: './out/service.js', // dist dir of service file
    utPath: './out/service.ut.js' // dist dir of service ut file,
    plugins: [{
        apply (config) {
            config.plugin('before-parse', (data, config) => {
                console.log('processing:', data.info.title)
            })
        }
    }]
})

plugins

View test code for all plugins usage.

Supported Events:

  1. before-parse

    process raw json data from yaml

    params: data, config

  2. after-parse

    process render json data

    params: data, config

  3. before-params

    process params of eath api

    params: params, path

  4. after-params

    after processing params

    params: params, path

  5. after-api

    after processing each api

    params: apiInfo, path

  6. api-template

    after processing params

    params: template, data

  7. service-template

    after processing params

    params: template, data

  8. test-template

    after processing params

    params: template, data

code generated

api.js

export default {
    menu_list: _dataPath('/menu/list'), // 获取信息管理中心菜单列表
    user_login_role_view: _dataPath('/user/login/role/view'), // 获取用户角色信息
    user_list: _dataPath('/user/list'), // 根据搜索条件和分页信息获取用户列表
}

service.js

/**
 * 获取信息管理中心菜单列表
 * @param { Array } params 请求参数
 */
export const listMenus = () => {
    return http.post(api.menu_list)
}
 
/**
 * 获取用户角色信息
 * @param { Array } params 请求参数
 */
export const viewLoginUserRole = () => {
    return http.post(api.user_login_role_view)
}
 
/**
 * 根据搜索条件和分页信息获取用户列表
 * @param { Object } params 请求参数
 * @param { String } params['departmentId'] 单位Id
 * @param { String } params['searchCondition'] 搜索条件
 * @param { Integer } params['pageNumber'] 分页页码
 * @param { Integer } params['pageSize'] 分页大小
 */
export const listUsers = (params) => {
    return http.post(api.user_list, params)
}

service.ut.js

describe('获取信息管理中心菜单列表', () => {
    it('normal request', () => {
        expect.assertions(1)
        return service.listMenus().then(data => {
            expect(data.code).toBe(0)
        })
    })
})

describe('获取用户角色信息', () => {
    it('normal request', () => {
        expect.assertions(1)
        return service.viewLoginUserRole().then(data => {
            expect(data.code).toBe(0)
        })
    })
})

Package Sidebar

Install

npm i swagger-to-service

Weekly Downloads

6

Version

0.9.8

License

MIT

Last publish

Collaborators

  • qintx