首页 > 其他分享 >Vue axios 拦截器

Vue axios 拦截器

时间:2024-01-02 12:31:41浏览次数:27  
标签:axios 请求 Vue instance 拦截器 error config


Vue axios 拦截器_封装

正常情况下打开浏览器前端页面向后端发起请求使用的是axios,无论是原生的axios还是自己封装的axios都看成是axios。发起请求之后后端去数据库里面拿数据,然后返回给前端。

发起请求的地方是axios,并且你能够封装这个axios,那么你就可以添加拦截器。

请求拦截器就是你在发起请求的时候应该做什么事情,响应拦截器就是你在接收到这个请求之后应该去干什么。


拦截器可以拦截每一次请求和响应,然后进行相应的处理。


  • 请求拦截应用场景: 发起请求前添加header

使用最多的场景就是前端调用后端,后端是有鉴权逻辑的,前端需要添加一个token。前端在登入的时候就应该获取这个token了,这个token加到url的参数之内。 


响应拦截应用场景:


  • 统一处理API响应状态码200或非200的提示消息,拿到业务的状态码。做一些自定义的响应配置
  • 统一处理catch异常提示信息

主要去处理响应是否成功,拿到返回业务状态码的逻辑,这个时候其实是自定义的响应,到底业务有没有成功,这决定了你的前端展示。

这些都是优先于你的axios.get()/post()去执行的,不管是在get/post发起请求之前还是获得响应之后,你得先经过拦截器!!!不然封装也没多大的意义。

import axios from "axios"

const axios_instance = axios.create({
    baseURL: 'http://httpbin.org',
    timeout: 5000,
})

//请求之前要去干什么
//添加请求拦截器,固定写法,config是接受参数,可以取其他名称
//能够利用config的方式去做请求拦截上面的配置
axios_instance.interceptors.request.use(
    config => {
    //在请求之前做的事情,比如添加请求头
    config.headers['Test-header'] = 'zhangsan'
    return config
},
    error=>{
    //请求发生了error,处理请求错误
    //axios是基于ajax和promise封装的
    //Promise.reject代表在使用instance发起请求的时候,失败了在catch语句中可以获取
    //.then .catch .finally都是promise提供的能力
    return Promise.reject(error)
 }
)

Vue axios 拦截器_拦截器_02

 响应拦截器

import axios from "axios"

const axios_instance = axios.create({
    baseURL: 'http://httpbin.org',
    timeout: 5000,
})

//请求之前要去干什么
//添加请求拦截器,固定写法,config是接受参数,可以取其他名称
//能够利用config的方式去做请求拦截上面的配置
axios_instance.interceptors.request.use(
    config => {
    //在请求之前做的事情,比如添加请求头
    config.headers['Test-header'] = 'zhangsan'
    return config
},
    error=>{
    //请求发生了error,处理请求错误
    //axios是基于ajax和promise封装的
    //Promise.reject代表在使用instance发起请求的时候,失败了在catch语句中可以获取
    //.then .catch .finally都是promise提供的能力
    return Promise.reject(error)
 }
)


//添加响应拦截器,响应之后需要干什么
//先在这里处理,最后到你的.vue组件当中的.then().catch().finally()中处理
//要先经过这个地方
axios_instance.interceptors.response.use(
    response =>{
    //响应接收后做的事情,在.then .catch接受之前
    //业务层的报错 
        if(response.data.code != 200){
            alert('数据请求失败')
            return Promise.reject(response)
        }
        return response
    },
    error =>{
        //状态码非200范围内
        return Promise.reject(error)
    }
)

export default axios_instance

标签:axios,请求,Vue,instance,拦截器,error,config
From: https://blog.51cto.com/u_14035463/9067686

相关文章

  • VUE框架Vue3下使用watch监听reactive下的数据变化并使深度监视起效------VUE框架
    <template><h1>{{data.counter}}</h1><button@click="data.counter++">按一下加一</button><h1>{{data.a.b.c.d.counter1}}</h1><button@click="data.a.b.c.d.counter1++">按一下加一&l......
  • vue 2实战系列 —— 复习Vue
    复习Vue近期需要接手vue2的项目,许久未写,语法有些陌生。本篇将较全面复习vue2。Tip:项目是基于ant-design-vue-proant-design-vue-pro由于cms是基于这个项目开发的,所以笔者就将其下载下来。下载后运行//按照依赖yarninstall//本地启动yarnrunserve根据提......
  • 一个报错深刻理解axios传参和mock拦截(外加正则表达式)
    前言:事情是这样的,在使用axios二次封装和mock进行拦截的时候,不是参数传递方式不正确就是找不到后端接口,为此我茶不思饭不想把axios和mock好好看了一遍,最后除了这些问题,发现是输在了正则表达式上面,找出错误的时候自己都懵了axioa传参问题总所周知,我们在平时使用axios的时候是这样......
  • 【电影推荐系统】Spring Boot + Vue3 前后端分离项目
    目录0前言1项目前端介绍1.1项目启动和编译1.1.1项目启动1.1.2项目编译1.2前端技术栈1.3功能模块前端界面展示1.3.1基础功能模块1.3.2用户模块1.3.3特色功能展示1.3.4界面自适应实现2项目后端介绍2.1项目打包部署2.1.1项目打包2.1.2项目部署2.2后端功能实现3数据......
  • vue3的ref、reactive、toRef、toRefs
    用处:用于在setup中创建响应式变量导出:import{ref,reactive,toRef,toRefs}from'vue'区别:ref用来定义基础数据类型,String,Number,Boolean,Symbol;通过Object.defineProperty()的get和set来实现响应式;js操作数据需要.value,模版中读取不需要.valuereactive用来定义......
  • vue改错总结
    vue表单和表格一起使用的时候,表格里非编辑框不再使用v-model进行双向数据绑定,当tabledatase的数据发生变化时候,会自动渲染新的数据,但是可便捷table单元格需要用到插槽技术,当更新name的时候才会自动渲染<template><div><el-form:model="form"><el-table:data=......
  • 前端环境搭建到创建vue项目运行
    整体流程1.安装nvm管理工具,用于管理node的版本方便node版本的切换a.下载nvm1.官方下载地址:https://github.com/coreybutler/nvm-windows/releases2.备用下载地址:https://xiaocai1688.lanzouw.com/b04wvgimj密码:h33mb.直接双击安装,验证安装成功输入命令nvm-v......
  • 关于vue里面使用markdown插入视频前台渲染导致<video>等标签被转义成字符,导致视频加载
    markdown中插入视频前台渲染出来导致<video>等标签被转义成字符解决办法:如图:在markdown里面插入视频,可以按照下面写法,哈哈,虽然很捞,但是还是可以满足的。<videosrc="https://xxxxxxxxxxxxxx.mp4"controls="true"style="max-width:100%;height:auto;"></video> ......
  • 在Vue3中实现前端导出Excel功能
    在Vue3中,可以使用第三方库如xlsx来导出Excel文件。以下是一个基本示例:一、Vue3常规写法安装xlsx库首先,你需要安装xlsx库。使用以下命令进行安装:npminstallxlsx导入函数在Vue组件中,导入所需的函数:import{writeFile}from'xlsx';创建模拟数据创建一个函数来生成Excel文件的数......
  • 在 Django 中使用 Vue.js 组件的步骤如下³⁴: 1. **安装 Vue.js**:首先,你需要在你的开
    在Django中使用Vue.js组件的步骤如下³⁴:1.**安装Vue.js**:首先,你需要在你的开发环境中安装Vue.js³。2.**创建Vue组件**:在Vue.js中,你可以创建一个新的Vue组件。例如,你可以在`src/components`文件夹下新建一个名为`Home.vue`的组件¹。3.**在Django模板中引......