美文网首页Vue3.0vuevue
vue3 axios封装 ElementUI Plus

vue3 axios封装 ElementUI Plus

作者: 云高风轻 | 来源:发表于2021-11-19 22:31 被阅读0次

1.前言

vue add axios 的形式安装 axios
常规的安装在vue3里面 封装也比较简单,


2. 统一封装 请求拦截 响应拦截

路径/src/utils/http.js

import axios from 'axios';
// import qs from 'qs'
import store from '@/store/index'       //已经设置路径别名,否则相对路径引用
import { ElMessage, ElLoading } from "element-plus";
let loading = null
const service = axios.create({
    timeout: 5000,                                   //超时时间
    baseURL: "http://yzs.xx.com",             // 我们在请求接口的时候就不用写前面 会自动我们补全
    // transformRequest: data => qs.stringify(data)    //post请求参数处理,防止post请求跨域
})
// http request 拦截器
service.interceptors.request.use(config => {
    loading = ElLoading.service({
        lock: true,
        text: 'Loading',
        background: 'rgba(0, 0, 0, 0.7)',
    })
    //如果存在jwt,则将jwt添加到每次请求之中..
    if (store.state.jwt) {
        config.params = {
            ...config.params,
            jwt: store.state.jwt
        }
    }
    return config
}, err => {
    return err
})
// http response 拦截器
service.interceptors.response.use(response => {
    loading.close()
    return response
    //接收返回数据..
    // const res = response.data
    //判断返回数据是否存在状态code和错误提示信息..
    // if (!res.code || !res.msg) {
    //     return showMessage('响应数据格式错误', "error")
    // }
    //判断状态code是否为指定数值(200)..
    // if (res.code != 200) {
    //     return showMessage(res.msg)
    // }
    // return res
}, err => {
    console.log("33333333333333333")

    loading.close()
    return showMessage(err.message)
})

//封装错误提示信息..
function showMessage(message, type = "error", showClose = true) {
    ElMessage({
        showClose,          //是否显示X
        message,         //错误提示信息
        type,        //显示类型
        duration: 3 * 1000    //展示时间
    })
    return Promise.reject()
}
export default service;

具体的逻辑 一定要根据自己的业务来自己实现


3. api封装

/src/api/loginHttp.js

import http from '@/util/http.js'
export const getLogin = (parmas) => {
    return http
        .post("/login/info", parmas)
}

4. 组件使用

import  * as api from "@/api/loginHttp.js";
let name = ref();
let psw = ref();
let login = async () => {
  let a = {
    phone: name.value, //1860xxxxx753,
    password: psw.value, //"0987654",
  };
  // try {
    let res = await api.getLogin(a);
    if (res.data.code == 200) {
      ElMessage({
        message: "成功",
        type: "success",
      });
    } else {
    }
  // } catch (error) {
  //   console.log("-----error:", error);
  // }
};

1.具名导入
2.单值响应式 value
3.try catch 看情况使用


参考资料

vue2 axios配置


初心

我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理;
如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
共勉

相关文章

网友评论

    本文标题:vue3 axios封装 ElementUI Plus

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