在Vue网络中请求interceptors,具体应该怎么做?

这篇文章主要介绍了浅谈vue网络请求之interceptors实际应用,现在分享给大家,也给大家做个参考。

项目背景

最近在项目开发中,遇到下面这样一个问题:

在进行铭感操作之前,每个请求需要携带token,但是token 有有效期,token 失效后需要换取新的token并继续请求。

需求分析

立即学习“前端免费学习笔记(深入)”;

每个请求都需要携带 token ,所以我们可以使用 axios request 拦截器,在这里,我们给每个请求都加 token,这样就可以节省每个请求再一次次的复制粘贴代码。

token 失效问题,当我们token 失效,我们服务端会返回一个特定的错误表示,比如 token invalid,但是我们不能在每个请求之后去做刷新 token 的操作呀,所以这里我们就用 axios response 拦截器,我们统一处理所有请求成功之后响应过来的数据,然后对特殊数据进行处理,其他的正常分发。

功能实现

分析完问题后,我们来实现功能

安装axios, 这里我们就赘述怎么安装axios.

在 main.js 注册 axios

Vue.use(Vuex)Vue.use(VueAxios, axios)Vue.use(qs)

登录后复制

注:qs,使用axios,必须得安装 qs,所有的Post 请求,我们都需要 qs,对参数进行序列化。

在 request 拦截器实现

axios.interceptors.request.use( config => {  config.baseURL = '/api/'  config.withCredentials = true // 允许携带token ,这个是解决跨域产生的相关问题  config.timeout = 2500  let token = sessionStorage.getItem('access_token')  let csrf = store.getters.csrf  if (token) {   config.headers = {    'access-token': token,    'Content-Type': 'application/x-www-form-urlencoded'   }  }  if (config.url === 'refresh') {   config.headers = {    'refresh-token': sessionStorage.getItem('refresh_token'),    'Content-Type': 'application/x-www-form-urlencoded'   }  }  return config }, error => {  return Promise.reject(error) })

登录后复制

在 response 拦截器实现

axios.interceptors.response.use( response => {  // 定时刷新access-token  if (!response.data.value && response.data.data.message === 'token invalid') {   // 刷新token   store.dispatch('refresh').then(response => {    sessionStorage.setItem('access_token', response.data)   }).catch(error => {    throw new Error('token刷新' + error)   })  }  return response }, error => {  return Promise.reject(error) })

登录后复制

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

vue实现a标签点击高亮方法

Vue-路由导航菜单栏的高亮设置方法

Vue 实现双向绑定的四种方法

以上就是在Vue网络中请求interceptors,具体应该怎么做?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2750374.html

(0)
上一篇 2025年3月8日 05:35:14
下一篇 2025年3月7日 15:38:31

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • MVC5下拉框单选绑定的具体代码实现

    这篇文章主要为大家详细介绍了mvc5下拉框绑定,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了MVC5下拉框单选绑定的具体代码,供大家参考,具体内容如下 1.Model [Display(Name = “学历”)] …

    编程技术 2025年3月5日
    200
  • Pythong中关于getpass模块的具体介绍

    最近在看python标准库官方文档的时候偶然发现了这个模块。仔细一看内容挺少的,只有两个主要api,就花了点时间阅读了一下源码,感觉挺实用的,在这安利给大家。下面这篇文章主要给大家介绍了关于python基础之getpass模块的相关资料,需…

    2025年2月27日 编程技术
    200
  • 一份python入门应该看的学习资料

    关于python入门你应该看这些资料,帮助你快速入门python,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 网上学习的时候总会遇到一些好的文章,分享给大家,也谢谢作者的分享。 Python 简介 Python 是一个高层次的结合了解…

    2025年2月27日
    200
  • 检查并修复mysql数据库表的具体方法

    这篇文章介绍了检查并修复mysql数据库表的具体方法,有需要的朋友可以参考一下 #!/bin/sh#code by scpman#功能:检查并修复mysql数据库表#将此脚本加到定时中,脚本执行时,等会读库,列出要修复的所有表,然后计时,开…

    数据库 2025年2月19日
    200
  • MySQL如何添加索引的具体介绍

    mysql是一个关系型数据库管理系统,在开发中都可以用的到,当数据量比较大的时候在查询的时候回发现比较慢,这个时候就要想把法优化sql语句,今天介绍一种优化sql的方法。 1.首先我先创建一个表,然后在添加一些数据,写个存储过程去写入数据,…

    2025年2月19日 数据库
    200
  • mysql中关于排名函数的具体介绍

    对mysql数据表中的某一字段进行排名 1.原始的表数据如下图。done_seconds为完成的时间,需求为根据该字段来对每条数据进行排名。 2.输入以下SQL语句: SELECT A.*,@rank:=@rank+1 AS pm FROM…

    2025年2月19日 数据库
    200
  • MySQL5.7.19解压版的安装具体详解

    这篇文章主要介绍了最新版mysql5.7.19解压版安装指南,需要的朋友可以参考下 MySQL版本:MySQL Community Edition (GPL)   ——  MySQL Community Server…

    2025年2月18日
    200
  • MySQL中关于事务的具体详解

    MySQL事务: 1.MySQL事务控制语句 (1).开启事务 begin; 登录后复制 (2).提交事务 commit; 登录后复制 (3).回滚事务 rollback; 登录后复制 (4).设置事务是否自动提交 set autocomm…

    数据库 2025年2月18日
    200
  • 渲染服务器命令中包含哪些具体的命令?

    渲染服务器命令是用于控制和管理渲染进程的指令,它们可以启动、停止、监控和配置渲染任务。这些命令通常通过命令行界面或脚本执行,以确保渲染过程按照预定的参数和时间线进行。 渲染服务器命令是指用于控制和管理渲染服务器的一系列指令,它们可以通过命令…

    服务器 2025年2月15日
    300

发表回复

登录后才能评论