socar-baseapi

1.1.5 • Public • Published

说明

实现基于 openApi 的接口请求服务

调用方式

 // 直接解析
 baseApi.init(openapiDocument, config)
 // 生产实例
 baseApi.producing(openapiDocument, config)

二者区别在于, 直接解析后, 请求实例和schema会保留在 baseApi 中(重复调用 baseApi.init 会替换掉之前解析的结果), 直接调用baseApi的方法即可, 如:

/**
 * 获取api实列 如果传入取 api地址,则返回指定api否则返回 api实例
 * @param {string} path api地址
 * @returns  axios instance
 */
baseApi.getApi(path)
/**
 * 获取接口 Parameters 对象
 * @param {string} path 接口路径 例如:xx/xxx
 * @param {string} method 方法名称 默认:"get"
 * @returns {object} parameters
 */
baseApi.getParameters(path, method)
/**
 * 获取过滤模型
 * @param {string} path 接口路径 例如:xx/xxx
 * @returns {object} filter 过滤模型对象
 */
baseApi.filterSchema(path)
/**
 * 获取接口 描述 schema
 * @param {string} path 接口路径 例如:xx/xxx
 * @param {string} method 方法名称 默认:"get"
 * @returns {object} schema
 */
baseApi.getSchema(path, method)

而生产实例,不会保留在 baseApi 中,而是将解析结果 apiInstance , apiPathsMap 和上述例子中的 getApi , getParameters , filterSchema , getSchema , 方法拷贝一份给独立的实例返回给调用者

直接解析

  baseApi.init(openapiDocument, {
      //基础url
      baseUrl: baseUrl,
      //错误处理函数
      catchError(err) {},
      // axios 请求拦截器中的hook
      beforeRequest(config, instance) {
          // 如果此hook返回config,则axios请求时会使用该config
          // 不返回或返回任何为false的布尔值都将使用默认
          return config
      },
      // axios 响应拦截器中的hook
      beforeResponse(response, instance) {
          // 如果此hook返回response,则axios响应数据则会使用该response
          // 不返回或返回任何为false的布尔值都将使用默认
      }
  })

生产实例

baseApi
    .producing(openapiDocument, {
        // 请求基础路径
        baseUrl: baseUrl,
        // 请求前 hook
        beforeRequest(config, instance) {
            // 如果此hook返回config,则axios请求时会使用该config
            // 不返回或返回任何为false的布尔值都将使用默认
            return config
        },
        // axios 响应拦截器中的hook
        beforeResponse(response, instance) {
            // 如果此hook返回response,则axios响应数据则会使用该response
            // 不返回或返回任何为false的布尔值都将使用默认
        }
    })
    .then((instance) => {
        // 解析后实例
        console.log(instance)
        // 测试getApi
        instance
            .getApi(/xxx/xxx)
            .get()
            .then((res) => {
                console.log(res)
            })
        // 测试获取过滤模型
        console.log(instance.filterSchema(/xxx/xxx))
        // 测试获取 Schema
        console.log(instance.getSchema(/xxx/xxx))
    })

CHANGELOG

1.1.3

增加了 producing 方法用以生产解析实例

1.1.4

修改getHook 错误

1.1.4

增加 getSchema(path,method) 未传递 path 错误提示

Readme

Keywords

none

Package Sidebar

Install

npm i socar-baseapi

Weekly Downloads

1

Version

1.1.5

License

MIT

Unpacked Size

392 kB

Total Files

12

Last publish

Collaborators

  • lichonglou