Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

yugasun/vue-axios-plugin

Repository files navigation

vue-axios-plugin

Build Status Downloads Version js-standard-style

简体中文 | English

axios plugin for Vuejs project

How to install

Script tag

<!-- add it after vue.js -->
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/vue-axios-plugin"></script>

CommonJS

Firstly, npm install

npm install --save vue-axios-plugin

Then configure in your entry file:

import Vue from 'Vue'
import VueAxiosPlugin from 'vue-axios-plugin'
Vue.use(VueAxiosPlugin, {
 // request interceptor handler
 reqHandleFunc: config => config,
 reqErrorFunc: error => Promise.reject(error),
 // response interceptor handler
 resHandleFunc: response => response,
 resErrorFunc: error => Promise.reject(error)
})

Options

Except axios default request options, vue-axios-plugin provide below request/response interceptors options:

Name Type Default Description
reqHandleFunc {Function} config => config The handler function for request, before request is sent
reqErrorFunc {Function} error => Promise.reject(error) The error function for request error
resHandleFunc {Function} response => response The handler function for response data
resErrorFunc {Function} error => Promise.reject(error) The error function for response error

Example

Default method in $http, it just contains get and post method:

this.$http.get(url, data, options).then((response) => {
 console.log(response)
})
this.$http.post(url, data, options).then((response) => {
 console.log(response)
})

Use axios original method in $axios, by this, you can use all allowed http methods: get,post,delete,put...

this.$axios.get(url, data, options).then((response) => {
 console.log(response)
})
this.$axios.post(url, data, options).then((response) => {
 console.log(response)
})

TODO

  • Unit test.

Notice!!!

When you send a request use application/x-www-form-urlencoded format, you need to use qs library to transform post data, like below:

import qs from 'qs'
this.$http.post(url, qs.stringify(data), {
 headers: {
 'Content-Type': 'application/x-www-form-urlencoded',
 }
}).then((response) => {
 console.log(response)
})

But if the data has properties who's type if object/array, you need convert these properties into JSON string:

import qs from 'qs'
function jsonProp (obj) {
 // type check
 if (!obj || (typeof obj !== 'object')) {
 return obj
 }
 Object.keys(obj).forEach((key) => {
 if ((typeof obj[key]) === 'object') {
 obj[key] = JSON.stringify(obj[key])
 }
 })
 return obj
}
this.$http.post(url, qs.stringify(data), {
 headers: {
 'Content-Type': 'application/x-www-form-urlencoded',
 },
 transformRequest: [
 function (data) {
 // if data has object type properties, need JSON.stringify them.
 return qs.stringify(jsonProp(data))
 }
 ]
}).then((response) => {
 console.log(response)
})

More usage, view axios

License

MIT

About

axios plugin for Vuejs project

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /