美文网首页程序员前端开发
vue项目axios请求封装

vue项目axios请求封装

作者: Spinach | 来源:发表于2020-09-08 23:09 被阅读0次

    这个封装方法不用在main.js中引入axios,也不用将axios挂到原型链上

    在src下创建api文件夹,在api文件夹下创建network.js和index.js文件:

    image.png

    在network.js对axios进行全局配置并封装:

    // 导入axios
    import axios from 'axios';
    
    // 进行一些全局配置
    // 公共路由(网络请求地址)
    axios.defaults.baseURL = 'http://localhost:8080/api';
    // 请求响应超时时间
    axios.defaults.timeout = 5000;
    
    // 封装自己的get/post方法
    export default {
      get: function(path = '', data = {}) {
        return new Promise(function(resolve, reject) {
          axios.get(path, {
            params: data
          })
            .then(function(response) {
              // 按需求来,这里我需要的是response.data,所以返回response.data,一般直接返回response
              resolve(response.data);
            })
            .catch(function(error) {
              reject(error);
            });
        });
      },
      post: function(path = '', data = {}) {
        return new Promise(function(resolve, reject) {
          axios.post(path, data)
            .then(function(response) {
              resolve(response.data);
            })
            .catch(function(error) {
              reject(error);
            });
        });
      }
    };
    
    

    index.js:专门用于管理请求各种接口地址,配置相应代码:

    // 导入封装好的网络请求类工具
    import Network from './network';
    
    // 封装各种接口请求
    // export const 接口名 = () => Network.get('/路由',参数对象);
    export const getTable1H2O = () => Network.get('/getStu', { tableName: 'table1H2O' });
    export const getTable2H2O = () => Network.get('/getStu', { tableName: 'table2H2O' });
    ...
    ...
    

    在请求页面(e.g. H2O.vue)

    data() {
        return {
          dataA: [],
          dataB: []
        };
      },
    mounted() {
      //  发送请求获取数据
        getTable1H2O().then(data => {
          console.log(data);
          this.dataA = data;
        });
        getTable2H2O().then(data => {
          console.log(data);
          this.dataB = data;
        });
      }
    

    注:在这个例子中,两个请求的路由地址(url)相同(都是/getStu),只是参数不同,这个按自己的需求来写就行

    相关文章

      网友评论

        本文标题:vue项目axios请求封装

        本文链接:https://www.haomeiwen.com/subject/isksektx.html