Vue axios 封装

这篇博客详细介绍了如何在Vue项目中配置和使用axios库进行API请求。包括设置基础URL、请求拦截器、响应拦截器以及错误处理。文章还展示了在main.js中全局引入axios并挂载到Vue原型上的方法,以及示例的GET请求用法。
摘要由CSDN通过智能技术生成

 axios.js 文件

import axios from "axios";

import qs from "qs";

import cookie from "js-cookie";

import { Message } from "element-ui";

const ERR_OK = "1"; //接口成功code值

const http = axios.create({

  // baseURL: `${process.env.VUE_APP_API}:10091`
   /**
       项目的服务端口号{
            本地:10091,
            正式:api
        } 
        判断是否为本地服务
    */

  baseURL: `${
     

    process.env.VUE_APP_API == "http://192.168.20.113"

      ? process.env.VUE_APP_API + ":10091"

      : process.env.VUE_APP_API + "/api"

  }`

});

http.CancelToken = axios.CancelToken;

http.interceptors.request.use(

  config => {

    const token = cookie.get("token");

    if (config.url != "https://zsty18.com/api/postOrder.act") {

      if (token) {

        config.headers.authentication = token;

      }

      config.headers.clientType = 3;

    }


    if (config.url.indexOf("upload") > -1 && config.data.isNotQs) {

      const formData = new FormData();

      formData.append("img", config.data.img);

      config.data = formData;

    } else if (

      config.url.indexOf("base/") > -1 ||

      config.url.indexOf("postOrder.act") > -1

    ) {

      config.data = qs.stringify(config.data);

    }

    return config;

  },

  err => {

      Message({

        type: "warning",

        showClose: true,

        message: err

      });

    return Promise.reject(err);

  }

);



http.interceptors.response.use(

  response => {

    const data =

      typeof response.data == "string"

        ? JSON.parse(response.data)

        : response.data;

    if (response.config.url == "https://zsty18.com/api/postOrder.act") {

      return data;

    }

    if (response.config.url.indexOf("live/liveRoom/query") > -1) {

      return data;

    }

    if (

      data.code == ERR_OK ||

      data.code == 200 ||

      data.code == 1003 ||

      data.code == 406 ||

      data.code == 9012

    ) {

      return data;

    } else {     

        Message({

          message: data.message,

          type: "error"

      }

    }

  },

  err => {

    return Promise.reject(err);

  }

);

export default http;

main.js 文件

import axios from "./axios"; 
Vue.prototype.$axios = axios;

使用

this.$axios.get(url).then(res => {}).catch(() => {}).finally(()=>{});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值