zoukankan      html  css  js  c++  java
  • axios的使用方法

    无意间在百度上搜索“vue-axios整合使用”,基本上整页整页的复制了我的这一篇文章,诚惶诚恐,主要是怕误导一些刚刚上路的新手(老司机不会看到这篇文章,哈哈)。 
    惯例先安装axios,不多说!

    cnpm install axios
    • 1

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

    src/axios/index.js 如下:

    import axios from 'axios'
    import qs from 'qs'
    • 1
    • 2
    // 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';
    • 1
    • 2
    • 3
    • 4

    拦截器,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);
    });
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    公共方法:

    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)
          })
      })
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    业务方法:

    export default {
      getAddressJson() {
        return fetch('/address/',{addressId:1})
      }
    }
    • 1
    • 2
    • 3
    • 4
    • 5

    如果不理解可以将以上代码依次copy到src/axios/index.js文件,当然axios.defaults.baseURL = 'http://localhost:8008'; 需要换成自己的api。

    2全局注册axios

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

    import axios from './axios'
    • 1

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

    在main.js中:

    import axios from './axios'
    Vue.prototype.$axios = axios
    • 1
    • 2

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

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

    以上多处来自网上资源,整理而成,中间隔着一个周末,然后很多已经找不到出处!

    https://blog.csdn.net/hant1991/article/details/74931158

  • 相关阅读:
    分享5个viewport相关的jQuery插件
    超棒的响应式jQuery网格布局插件 grida licious
    6款不容错过的超棒倒计时jQuery插件
    分享45套2011年和2012年的高质量免费网站模板
    分享11个使用方便的免费智能手机UI套件
    推荐30款超精致的体育类型的网站设计
    HDOJ1001
    HDOJ1003
    HDOJ1000
    HDOJ1002
  • 原文地址:https://www.cnblogs.com/dontes/p/9549847.html
Copyright © 2011-2022 走看看