vue请求拦截统一给所有请求加loading

这篇具有很好参考价值的文章主要介绍了vue请求拦截统一给所有请求加loading。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 需求:在项目开发过程中通常会给请求加loading,每次发请求单独加loading费事费力。
  • 思路:用h5做手机端项目,业务简单,统一封装loading,由于vue组件化开发,通常是用ajax封装后的axios插件进行,在请求拦截里面可以加loading,接口返回拦截器里面关闭loading。
  • 具体实现过程
    1、每个接口的loading做成可配置化,如果模块的实际业务需要自己加loading,可以在请求方法中配不需要统一loading,hideloading属性。在请求拦截器,interceptors.request中如果不隐藏loading,就打开全局loading。
    2、接口返回的拦截器,interceptors.response中关闭loading。
  • 注意:由于h5手机端使用的是vant组件,loading和提示语都是轻提示,实现起来比较容易实现。
  • 参看代码如下:
import axios from 'axios'
import { Toast, Dialog } from 'vant'

import router from '@/router'
import { Tips } from '@/utils/index'
import configs from "@/config";
// create an axios instance

const service = axios.create({
 baseURL: configs.HTTP_URL,
 withCredentials: true, // send cookies when cross-domain requests
 timeout: 50000 // 等待时间
})
console.log(configs)
// request拦截器 request interceptor
service.interceptors.request.use(
 config => {
   // 不传递默认开启loading
   if (!config.hideloading) {
     // loading
     Tips.loading(config.message)
   }
   if (localStorage.getItem('gy_h5_access_token')) {
     config.headers['access_token'] = localStorage.getItem('gy_h5_access_token')
   }

   config.headers['x-service-id'] = '123'

   return config
 },
 error => {
   // do something with request error
   console.log(error) // for debug

   return Promise.reject(error)
 }
)
// respone拦截器
service.interceptors.response.use(
 response => {
   Toast.clear()
   const res = response.data
   if (res.status && res.status !== 200) {
     Tips.error(res.msg)
     return Promise.reject(res || 'error')
   } else {
     if (res.code === 200) {
       return Promise.resolve(res.data)
     } else {
       Tips.error(res.msg)
       return Promise.reject(res || 'error')
     }
   }
 },
 error => {
   Toast.clear()
   if (error.response.status === 401) {
     Dialog({ message: '登录过期,请重新登录' }).then(() => {
       localStorage.removeItem('gy_h5_access_token')
       if (configs.otherUrl.ifsUrl) {
         window.location.href =  configs.otherUrl.ifsUrl + '/login'
       } else {
         router.replace({ name: 'NotFound' })
       }
     })
   } else {
     console.log(error,'error')
     Tips.error(error.response.data.message)
   }
   return Promise.reject(error)
 }
)
export default service


文章来源地址https://www.toymoban.com/news/detail-818907.html

到了这里,关于vue请求拦截统一给所有请求加loading的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求

    前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求, 请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13219 效果图如下: 实现代码如下: 使用方法 HTML代码实现部分 组件实现代码

    2024年02月11日
    浏览(57)
  • SpringBoot -05 SpringBoot web相关配置(静态资源访问、统一异常处理、文件上传、拦截器、统一跨域请求处理)

    小总结 SpringBoot是一个基于Spring的工具集,去帮我们完成了大量的配置。在SpringBoot中有一个约定大于配置的概念,就是他把我们很多第三方框架帮我们写好了,而且把我们整个第三方框架所需要的依赖全都通过起步依赖加进去了。开发中只需要加入起步依赖就可以实现某个场

    2024年02月01日
    浏览(45)
  • 【前端知识】Axios——请求拦截器模板

    Axios是一个基于Promise的HTTP客户端,用于发送HTTP请求。它可以在浏览器和Node.js环境中使用,并且提供了许多强大的功能,例如拦截请求和响应、转换请求和响应数据、取消请求等。 Axios具有简单易用的API,可以轻松地发送GET、POST、PUT、DELETE等各种类型的请求。它还支持异步操

    2024年02月09日
    浏览(48)
  • Vue3的axios请求封装,请求拦截,相应拦截

    对于三者放在Service.js中封装,方便使用 axios.create  的作用是创建一个新的  axios  实例,该实例可以具有自定义配置。通过使用  axios.create ,您可以为任何 API 生成一个客户端,并在使用同一客户端的任何调用中重复使用相同的配置。这使得在应用程序中使用多个 API 时更加

    2024年02月03日
    浏览(47)
  • VUE3 请求拦截器 响应拦截器

    1,导入axios  (使用axios进行接口的请求,页面发送http请求,很多情况我们要对请求和其响应进行特定的处理,如:判断token,设置请求头。如果请求数非常多,单独对每一个请求进行处理会变得非常麻烦,程序的优雅性也会大打折扣。所以axios为开发者提供了这样一个API:拦

    2024年02月16日
    浏览(49)
  • 已配置vue.config.js中的proxy代理,前端本地环境仍然请求后端出现跨域报错

    已配置vue.config.js中的proxy代理,前端本地环境仍然请求后端出现跨域报错 已配置vue.config.js中的proxy代理,前端本地环境仍然请求后端出现跨域报错 控制台仍然出现cors禁止报错,接口调不通 配置proxy代理解决跨域问题的原理是: 前端工程本地环境会启动一个 express 或 koa 的

    2024年02月01日
    浏览(58)
  • 【 vue使用请求loading:组件形式】

    这是我项目中想使用loading之后踩的第一个坑,后面优化用了vant自带的提示框,比较简单, 可移步这篇文章→→→ vue+vant使用请求loading 1. com/loading.vue 2. main.js 全局引用 3. 在页面中使用

    2024年02月16日
    浏览(36)
  • Vue3---请求拦截器携带token

    为什么要在请求拦截器携带Token? Token作为用户标识,在很多个接口中都需要携带Token才可以正确获取数据,所以需要在接口调用时携带Token。另外,为了统一控制采取请求拦截器携带的方案 如何配置? Axios请求 拦截器 可以在接口正式发起之前对请求参数做一些事情,通常Toke

    2024年02月15日
    浏览(46)
  • Vue 网络处理 - axios 异步请求的使用,请求响应拦截器(最佳实践)

    目录 一、axiox 1.1、axios 简介 1.2、axios 基本使用 1.2.1、下载核心 js 文件. 1.2.2、发送 GET 异步请求 1.2.3、发送 POST 异步请求 1.2.4、发送 GET、POST 请求最佳实践 1.3、请求响应拦截器 1.3.1、拦截器解释 1.3.2、请求拦截器的使用 1.3.3、响应拦截器的使用 1.3.4、拦截器在 Vue 脚手架中的

    2024年02月04日
    浏览(46)
  • vue报错:Uncaught SyntaxError: Unexpected token <;也就是前端的js请求响应数据是html格式的原因和解决方法

    “Uncaught SyntaxError: Unexpected token lt;” 错误通常出现在浏览器的开发者工具(console)中,它表示在解析 JavaScript 代码时遇到了意外的 字符。这个错误通常是由以下几种情况引起的: 代码中的 被错误地识别为 HTML 标签的开始:这通常发生在在引用外部 JavaScript 文件时,浏览器

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包