Skip to content
集成axios的vue插件
Branch: master
Clone or download
Latest commit e4cfb30 Apr 15, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist
src
types
.babelrc 集成axios的vue插件 Mar 27, 2019
.gitignore 集成axios的vue插件 Mar 27, 2019
LICENSE
README.md 优化描述 Apr 15, 2019
package.json 优化描述 Apr 15, 2019
webpack.config.js 集成axios的vue插件 Mar 27, 2019
yarn.lock 移除无用package Mar 29, 2019

README.md

vue-apis

LICENSE

NPM version NPM download NPM download

GitHub watchers GitHub stars GitHub forks GitHub issues GitHub last commit (branch)

  • A vue plug-in integrated with axios. Build the API using chain programming and return the request instance as a Promise. A nice simplification of how apis are built, and how they are referenced.
  • 一个集成了axios的vue插件。使用链式编程方式构建api,并以Promise返回请求实例。很好地简化了api的构建方式,和引用方式(通过this.$apis.apiName进行引用)。

Browser Support

Chrome Firefox Safari Opera Edge IE
Latest ✔ Latest ✔ Latest ✔ Latest ✔ Latest ✔ 11 ✔

Browser Matrix

Installing

npm install vue-apis
// or
yarn add vue-apis

Usage

Import

import Vue from 'vue'
import VueApis from 'vue-apis'

Vue.use(VueApis, options)

Options

option key type default value description
apis object {} api set
showLoading function undefined show loading layout function
hideLoading function undefined hide loading layout function
interceptors InterceptorObject undefined You can intercept requests or responses before they are handled by then or catch.

InterceptorObject

field type description
request RequestObject / Function When the instance is 'Function', it is a 'then' callback to the interceptor
response ResponseObject / Function When the instance is 'Function', it is a 'then' callback to the interceptor
RequestObject
Function e.g.
then (config) => { return config; }
catch (error) => { return Promise.reject(error); }
ResponseObject
Function e.g.
then (response) => { return response; }
catch (error) => { return Promise.reject(error); }

Example

  • main.js
import Vue from 'vue'
import VueApis from 'vue-apis'
import Api from './api'

Vue.use(VueApis, {
  apis: Api,
  showLoading: () => {
    console.log('showLoading')
  },
  hideLoading: () => {
    console.log('hideLoading')
  },
  interceptors: {
    request: {
      then(config) {
        // Do something before request is sent
        return config;
      },
      catch(error) {
        // Do something with request error
        return Promise.reject(error);
      }
    },
    response: {
      then(response) {
        // Do something with response data
        return response;
      },
      catch(error) {
        // Do something with response error
        return Promise.reject(error);
      }
    }
  }
})
  • api.js
import { ApiOptions, ApiMethod } from 'vue-apis'

const $api = {
  readme () {
    return new ApiOptions()
    .setUrl(`https://raw.githubusercontent.com/Chans-Open-Source/vue-apis/master/README.md`)
    .setMethod(ApiMethod.GET)
    .setParams({
      timestamp: Date.now()
    })
    .setHeaders({
      Authorization: `Bearer ${Date.now()}`
    })
    .request()
  }
}

export default $api
  • home.vue
<template>
  <div v-html="readme"></div>
</template>
<script>
  export default {
    data () {
      return {
        readme: ''
      }
    },
    async created () {
      const res = await this.$apis.readme()
      this.readme = res
    }
  }
</script>

Source Code

You can’t perform that action at this time.