Vue axios封装

1、安装VUEX和AXIOS

npm install vuex --save //Vuex
npm install --save axios //axios

2、axios 请求和响应拦截 src/service/request.js

import axios from 'axios';
import store from '@/store/store.js';

 // 创建axios实例
const service = axios.create({
  baseURL: '/api', //代理
  timeout: 15000 // 请求超时时间
})

// 添加请求拦截器
service.interceptors.request.use(
  function (config) {
    console.log(config,"请求前拦截")
    //统一参数 post请求
    if(config.data){
      // config.data.token=sessionStorage.getItem("Token");
    }
       //统一参数 get请求
    if(config.params){
      // config.params.token=sessionStorage.getItem("Token");
    }
    return config;
  }, 
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);
// 添加响应拦截器
service.interceptors.response.use(
    function(response) {
      //请求正常则返回
      return Promise.resolve(response);
    },
    function(error) {
      // 请求错误则向store commit这个状态变化 --vuex
      console.log(error,"响应拦截错误")
      const httpError= { 
        hasError:true,
        status:error.response.status,
        statusText:error.response.statusText
      };
      store.commit('ON_HTTP_ERROR', httpError);
      return Promise.reject(error);
    }
);

export default service;

3、VUEX文件 src/store/store.js

import Vue from 'vue' ;
import Vuex from 'vuex';
Vue.use(Vuex);

const store= new Vuex.Store({
    state:{
        httpError:{
            hasError:false,
            status:'',
            statusText:''
        },
    },
    mutations:{
        ON_HTTP_ERROR(state,payload){
            state.httpError = payload;
        },
    }
})
export default store;

4、API文件 //service/api.js

import request from '@/service/request';
//配置查询
export function programQuery(data) {
  return request({url: "program/query",method: "post",data:data});
}

5、组件使用接口

	import {programQuery} from "@/service/api" //引入接口
    methods:{
        //查询记录
        programQuery(){
             programQuery(this.programQueryForms).then(response => {
               let back_data=response.data.data;   //存储数据
            })
        },
    },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值