axios拦截,api统一管理

  1. 项目路径下,引入axios、qs依赖 —>下载axios

    • cnpm install axios
    • cnpm install qs
  2. 在项目的src路径下新建一个commJs文件夹,在commJs文件夹里新建aps.js和request.js,api.js用于写接口,对axios的封装写在request.js里

    request.js

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

//自动切换环境
axios.defaults.baseURL = process.env._BASEURL
//设置超时时间
axios.defaults.timeout = 10000;
// post请求头
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
axios.defaults.withcredentials = true

//请求拦截(请求发出前处理请求)
axios.interceptors.request.use((config) => {
    //在发送请求之前如果为post序列化请求参数
    if (config.method === 'post') {
      config.data = config.data;
    }
    return config;
  }, (error) => {
    return Promise.reject(error);
  });

// 响应拦截器(处理响应数据)
axios.interceptors.response.use((res) => {
    //对响应数据做判断,与后台协议统一接口返回格式
    console.log('>>>>>>>response: ', res);
    if (res.data.succ != 'ok') { //这个判断可根据实际情况修改
      return Promise.reject(res);
    }
    return res;
  }, (error) => {
    return Promise.reject(error);
  });

// 封装get方法
function get(url, params){
    return new Promise((resolve, reject) =>{
        axios.get(url, params).then(res =>{
            resolve(res.data);
        }).catch(err =>{
            reject(err.data);
        })
    });
}

// 封装post方法
function post(url, params){
    return new Promise((resolve, reject) =>{
        axios.post(url, params).then(res =>{
            resolve(res.data);
        }).catch(err =>{
            reject(err.data);
        })
    });
}

//对外接口
export function request({method, url, data}){
    if(method == 'get'){
        return get(url, data);
    }else if(method == 'post'){
        return post(url, data);
    }
}

export default {
    install(Vue) {
    Vue.prototype.$axios = axios;
    Vue.prototype.$request = function () {
            return request;
        }
    }
}

api.js

import {request} from './request'
 
// 列表查询接口
export const getList = (parmas) => {
  return request({
    url: 'xxx/xxx/xxx',
    method: 'post',
    data: parmas
  })
}
  1. 在具体组件中调用
//index.vue
import { getList } from "../../comm/js/api.js";
export default {
 methods: {
    getPage() {
      var param = {
        currentUser: '',
        currentPage: "1",
        pageSize: "10"
      };
      getList(param).then(res => {
        if (!res.result.list) {
          this.list = [];
        } else {
          this.list = res.result.list;
        }
      });
 }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值