请选择 进入手机版 | 继续访问电脑版

vue axios 的封装

[复制链接]
钟启航 发表于 2021-1-1 18:32:46 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
  1. //http.jsimport Vue from 'vue'import axios from "axios"const Axios = axios.create({  timeout: 30000,  //responseType:"json",  withCredentials:false,});/**  axios访问前的拦截,增加设置信息  baseURL=反向署理的URL所在,设置在nginx、apache下有效,tomcat下请设置为/  data=将json转换为字符发送  headers = 设置HTTP头文件,此中token是登岸时从服务器获取的  withCredentials = 提交时是否携带cookie*/Axios.interceptors.request.use(  config => {    var token = sessionStorage.getItem("account.token") || "";    if (token && token != "") {      config.headers = {        "Authorization": 'Bearer ' + token,        'Content-Type':'application/json; charset=utf-8',        }    }else{      config.headers = {        'Content-Type':'application/x-www-form-urlencoded; charset=utf-8',        }        config.data = Vue.prototype.qs.stringify(config.data)    }    return config;  },  error => {    return Promise.reject(error);  });/**  axios响应时拦截处理*/httpService.interceptors.response.use(    response => {        let msg = ""        if (response.status == 200) {            switch (response.data.code) {                case 1000:                    msg = response.data.msg                    // Message['success']({                    //     background: true,                    //     content: msg,                    //     duration: 3                    // })                    break;                default:                    msg = response.data.msg                    Message['error']({                        background: true,                        content: msg,                        duration: 10,                        closable: true                    })                                }            // 统一处理状态            return Promise.resolve(response.data.data)        } else {            return Promise.reject(response)        }    },    // 处理处理    error => {        if (error && error.response) {            switch (error.response.status) {                case 400:                    error.message = '错误请求';                                     break;                case 401:                    error.message = '未授权,请重新登录';                    break;                case 403:                    error.message = '拒绝访问';                    break;                case 404:                    error.message = '请求错误,未找到该资源';                    break;                case 500:                    error.message = '服务器端堕落';                    break;                default:                    error.message = `未知错误${error.response.status}`;            }            Message['error']({                background: true,                content: error.message,                duration: 10,                closable: true            })        } else {            error.message = "毗连到服务器失败";            Message['error']({                background: true,                content: error.message,                duration: 10,                closable: true            })        }        return Promise.reject(error);    })/** * 封装get方法 * @param url * @param data * @returns {Promise} */const get = function (url, param = {}) {  return new Promise((resolve, reject) => {    Axios.get(url, {        params: JSON.stringify(param),      })      .then(response => {        resolve(response.data);      })      .catch(err => {        resolve({          code: "no",          msg: err.err        });        //reject(err)      })  }) }const post = function (url, param = {}, bURL=Vue.prototype.config.proxy) {  let config = {    baseURL:bURL  }  return new Promise((resolve, reject) => {        Axios.post(url, param, config).then(response => {        resolve(response.data);    }).catch(err => {       var t = err.err.response.data      resolve(t);    })  })}export default {  install: function (Vue, Option) {    Object.defineProperty(Vue.prototype, "$http", {      value: Axios    });    Object.defineProperty(Vue.prototype, "$get", {      value: get    });    Object.defineProperty(Vue.prototype, "$post", {      value: post    });  }};
复制代码
然后在main.js中引入:
import axios from ‘@/assets/js/http.js’
Vue.use(axios);
在项目中使用:
this.$post(this.api.organize.list, p).then((res) => {});

来源:https://blog.csdn.net/qq_43237014/article/details/111941593
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )