Vue3请求拦截器里如何配置token

 更新时间:2024年08月28日 17:14:38   作者:奔跑的小G  
这篇文章主要介绍了Vue3请求拦截器里如何配置token,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Vue3请求拦截器配置token

// axios请求拦截器
httpInstance.interceptors.request.use(config => {
   console.log('请求拦截器',config);
   const userStore = useUserStore()
   const token = userStore.userInfo.token
   if(token){
   //固定写法
    config.headers.Authorization = `Bearer ${token}` 
    //注意Bearer后面的空格
   }
  return config
}, e => Promise.reject(e))

Vue3的axios请求封装,请求拦截,相应拦截

对于三者放在Service.js中封装,方便使用

axios.create 的作用是创建一个新的 axios 实例,该实例可以具有自定义配置。

通过使用 axios.create,您可以为任何 API 生成一个客户端,并在使用同一客户端的任何调用中重复使用相同的配置。

这使得在应用程序中使用多个 API 时更加方便,因为您可以为每个 API 创建一个单独的实例,并在每个实例中设置不同的配置。

axios.create 方法接受一个配置对象作为参数,该对象包含以下属性:

  • baseURL:用于所有请求的基本 URL。
  • headers:要发送的自定义 headers。
  • timeout:指定请求超时之前的毫秒数。
  • withCredentials:指示是否应该使用跨站点访问控制(CORS)凭据。
  • xsrfCookieName:用作 xsrf 令牌值的cookie的名称。
  • xsrfHeaderName:包含 xsrf 令牌值的 HTTP 头的名称。

例如,以下代码创建了一个新的 axios 实例,并将其配置为使用 /api/ 作为基本 URL:

const instance = axios.create({
  baseURL: '/api/'
});

axios请求封装

// 用create创建axios实例
const Service = axios.create({
    timeout: 3000,
    baseURL: 'http://127.0.0.1:8888/api/private/v1/',
    headers: { 'Content-type': 'application/json;charset=utf-8' }

})

// get 数据请求封装
export const get = config => {
    return Service({
        ...config,
        method: 'get',
        data: config.data,
    })

}

// post 数据请求封装
export const post = config => {
    return Service({
        ...config,
        method: 'post',
        data: config.data,
    })

}

请求拦截和响应拦截

在 Vue3 中,可以使用 Axios 库来进行 HTTP 请求。Axios 库提供了请求拦截器和响应拦截器,以便在请求发送和响应返回时执行一些操作。

请求拦截器可以用于在请求发送前执行一些操作,例如添加 token、设置请求头等。响应拦截器可以用于在响应返回后执行一些操作,例如处理错误信息、剥离无效数据等。

let loadingObj = null;
// 请求拦截,增加loading,对请求统一处理
Service.interceptors.request.use((config) => {
    loadingObj = ElLoading.service({
        lock: true,
        text: 'Loading',
        background: 'rgba(0, 0, 0, 0.7)',
    })
    return config;
})


// 相应拦截,对返回值做同意处理
Service.interceptors.response.use(response => {
    loadingObj.close();
    const data = response.data;
    if (!data.data) {
        ElMessage.error(data.meta.msg || '服务器错误')
    }
    else {
        ElMessage({
            message: '登录成功',
            type: 'success',
            duration: 1500
        })
    }
    return response.data;
}, error => {
    loadingObj.close();
    ElMessage({
        message: '服务器错误',
        type: 'error',
        duration: 2000
    })
})

接口的请求

import { get, post } from './service'

// 登录数据请求
export const loginAPI = data => {
    return post({
        url: '/login',
        data
    })

}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vant IndexBar实现的城市列表的示例代码

    vant IndexBar实现的城市列表的示例代码

    这篇文章主要介绍了vant IndexBar实现的城市列表的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 报错[vuex] unknown action type: userLogin问题及解决

    报错[vuex] unknown action type: userLogin问

    这篇文章主要介绍了报错[vuex] unknown action type: userLogin问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 不依任何赖第三方,单纯用vue实现Tree 树形控件的案例

    不依任何赖第三方,单纯用vue实现Tree 树形控件的案例

    这篇文章主要介绍了不依任何赖第三方,单纯用vue实现Tree 树形控件的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • 详解Vue如何支持JSX语法

    详解Vue如何支持JSX语法

    这篇文章主要介绍了详解Vue如何支持JSX语法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 基于vue-router 多级路由redirect 重定向的问题

    基于vue-router 多级路由redirect 重定向的问题

    今天小编就为大家分享一篇基于vue-router 多级路由redirect 重定向的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 一文完全掌握Vue中的$set方法

    一文完全掌握Vue中的$set方法

    这篇文章主要给大家介绍了关于如何完全掌握Vue中$set方法的相关资料,vue中$set方法对数组和对象的处理本质上的一样的,对新增的值添加响应然后手动触发派发更新,需要的朋友可以参考下
    2023-11-11
  • vue el-radio单选传值和默认选中方式

    vue el-radio单选传值和默认选中方式

    文章介绍了一个父组件和子组件的交互过程,父组件通过点击“关联公司”输入框弹出子组件dialog,子组件中使用SelectCompany.vue实现默认选中功能,作者分享了个人经验,希望能对大家有所帮助
    2025-01-01
  • vue使用Vue.extend方法仿写个loading加载中效果实例

    vue使用Vue.extend方法仿写个loading加载中效果实例

    在vue中提供v-loading命令,用于div的loading加载,下面这篇文章主要给大家介绍了关于vue使用Vue.extend方法仿写个loading加载中效果的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Vue中的计算属性computed传参方式

    Vue中的计算属性computed传参方式

    这篇文章主要介绍了Vue中的计算属性computed传参方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Vue中的匿名插槽与具名插槽详解

    Vue中的匿名插槽与具名插槽详解

    这篇文章主要为大家介绍了Vue中的匿名插槽与具名插槽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12

最新评论