360SDN.COM

首页/Vue.js/列表

vue和axios整合使用

来源:  2018-03-28 14:00:28    评论:0点击:

惯例先安装axios,不多说!

      npm install axios -S
cnpm install axios -S



axios配置

我的目录结构src/axios/index.js,axios配置都在该文件下

src/axios/index.js 如下:

 

import axios from 'axios';
import qs from 'qs

 

// axios 配置axios.defaults.timeout = 5000;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
axios.defaults.baseURL = 'http://localhost:8008';

 

拦截器,axios.interceptors.request.use发送请求前处理
axios.interceptors.response.use接受返回后,回调之前处理处理

 

//POST传参序列化
axios.interceptors.request.use((config) => {  
    if(config.method  === 'post'){
    config.data = qs.stringify(config.data);
  }  return config;
},(error) =>{  
    return Promise.reject(error);
});

//返回状态判断axios.interceptors.response.use((res) =>{  
    if(!res.data.success){    return Promise.reject(res);
  }  return res;
}, (error) => {  
    //404等问题可以在这里处理  
    return Promise.reject(error);
});

 

公共方法:

 

export function fetch(url, params) {  
    return new Promise((resolve, reject) => {
    axios.post(url, params)
      .then(response => {
        resolve(response.data);
      }, err => {
        reject(err);
      })
      .catch((error) => {
        reject(error)
      })
  })}

 

业务方法:

 

export default {
  getAddressJson() {    
    return fetch('/address/',{addressId:1})
  }
}

 

全局注册axios

 

为了使用axios,在各个组件中引入就可以使用:

import axios from './axios'

 

但是使用这种方法我们需要在每一个组件中去引入,有些麻烦,下面我们介绍一种全局注册的方法。

在main.js中:

 

import axios from './axios'
Vue.prototype.$axios = axios

 

添加这两行代码,将 axios 改写为 Vue 的原型属性,这样在各个组件中都可以使用axios,具体方法如下:

 

submitForm () {        
      this.$axios.getAddressJson().then(function (res) {
    //成功之后处理逻辑
        console.log(res)
      },function (res) {
        //失败之后处理逻辑
        console.log("error:"+res)
      })
    }
为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权