首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

axios 二次封装-状态处理拦截器

上篇[axios 二次封装-拦截器队列, 这篇是基于拦截器队列实现的状态处理拦截器, 某些情况下我们需要针对不同的响应状态码,执行不同的处理函数。例如: 410 权限校验, 500 服务器错误等。...除了常规的http状态码,后台也可能定了一套内部的请求码,例如: { code: 1, message:'OK' }。由此发现,如果希望通过定义一套处理模板代码,是无法满足实际业务需求的。...export const enum CUM_CODE { // 未知捕获 UNKNOWN = -1, // 请求失败,未获取到 status UNKNOWN_RES = -2 } /..., () => Promise.reject({message: '请求错误'}) ) .add( 410, () => Promise.reject({message: '登录或登录失效...status.install(http.candyPaper) // candyPaper http.use(status) 非请求错误or未定义状态规则 在之前的前置类型定义,定义了 CUM_CODE

79220

目前5种最流行的发送HTTP请求的方法

这里需要注意的是,onerror方法只处理与请求相关的网络级错误。为了识别HTTP错误,我们必须检查onload方法的HTTP状态代码。...在这个实现,我们必须使用响应。ok字段检查响应是否包含HTTP错误,因为在catch方法捕获错误属于网络级别,而不是应用程序级别。...Axios还在其catch方法捕获HTTP错误,从而无需在处理响应之前专门检查状态代码。在catch方法内部,我们可以使用一个错误来区分HTTP错误。响应检查,它存储HTTP错误代码。...它自动地将响应体解析Javascript对象,而不需要开发人员的干涉。它还在catch方法捕获HTTP错误,我们可以使用错误来识别该方法。响应领域。如果请求由于网络相关的错误失败,则这些错误。...响应和错误状态字段将保持未定义。 我们可以用类似的方式用SuperAgent发送POST请求

2.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

前端异常的捕获与处理

try { // 可能会导致错误代码 } catch (error) { // 在错误发生时怎么处理 } 如果 try 块的任何代码发生了错误,就会立即退出代码执行过程,然后执行 catch...JS 代码错误 下面我司内部错误监控平台一次日常报错的调用堆栈截图: 错误还是比较明显的,this 指向导致的问题。...,因此必须在捕获阶段将其捕捉到才行,但是这种方式虽然可以捕捉到网络请求的异常,但是无法判断 HTTP 的状态是 404 还是其他比如 500 等等,所以还需要配合服务端日志才进行排查分析才可以。...例,模拟接口响应 401 的情况: // 请求 axios.get(/api/test/401") // 结果 Uncaught (in promise) Error: Request failed...接口请求出错 Error: Request failed with status code 401 at createError (createError.js:17) at settle (settle.js

3.3K30

详细自定义封装Axios请求库,你还不会二次封装吗?

在开发,发送请求的入参大多是一个对象。在发送时,如果该请求get请求,就需要对参数进行转化。...那既然这是一个axios的数据包,那我们就可以添加修改里面的数据。 我们看看它源码对应的代码段,是TS写的,是一个泛型对象,对象包含了一些设置参数。...然后我们Axios因为是基于Promise的,所以我们最后可以使用Promise.reject捕捉他的错误信息。 Promise.reject会在error返回一个Promise错误对象对象。...如果有error对象,并且error对象有response参数时,我们此时就会确定这是请求状态错误。 为什么呢?因为error.response的status会返回浏览器爆出的状态码。...状态码处理 那我们还是先看直接错误处理: 我们获取到状态码,根据不同状态码弹出不同错误提示,这里我们将错误提示文字报错到这个error

5.1K40

搭建前端监控,如何采集异常数据?

前端项目,为了统一处理请求,比如 401 的跳转,或者全局错误提示,都会在全局写一个 axios 实例,这个实例添加拦截器,然后在其他页面中直接导入这个实例使用,比如: // 全局请求:src/request...拦截器捕获异常 首先我们 axios 添加响应拦截器: // 响应拦截器 instance.interceptors.response.use( (response) => { return...如果有响应,首先获取状态码,根据状态码来判断什么时候需要收集异常。上面的判断方式简单粗暴,只要状态码大于 400 就视为一个异常,拿到响应数据,并执行上报逻辑。...前端异常 上面我们介绍了在 axios 拦截器如何捕获接口异常,这部分我们再介绍如何捕获前端异常。 前端代码捕获异常,最常用的方式就是用 try..catch.....要避免获取到接口可能返回的超长错误信息,多半是接口没处理,这样可能会导致写入数据失败,要提前与后台规定好。

1.9K30

一个小白的角度看JavaScript Promise 完整指南

1.2 Promise 状态 Promise 可以分为四个状态: ⏳ Pending:初始状态,异步操作仍在进行。...Promise then then方法可以让异步操作成功或失败时得到通知。它包含两个参数,一个用于成功执行,另一个则在发生错误时使用。...由于我们正在处理 .then(..., onError)部分的错误,因此调用catch。d不会被调用。如果要忽略错误并继续执行Promise链,可以在c上添加一个catch。...当然,这种过早的捕获错误是不太好的,因为容易在调试过程忽略一些潜在的问题。 Promise finally finally方法只在 Promise 状态是 settled 时才会调用。...它执行Promises并将其添加到队列。如果队列小于并发限制,它将继续添加到队列。达到限制后,我们使用Promise.race等待一个承诺完成,因此可以将其替换为新的承诺

3.5K31

初学者应该看的JavaScript Promise 完整指南

1.2 Promise 状态 Promise 可以分为四个状态: ⏳ Pending:初始状态,异步操作仍在进行。...Promise then then方法可以让异步操作成功或失败时得到通知。 它包含两个参数,一个用于成功执行,另一个则在发生错误时使用。...由于我们正在处理 .then(..., onError)部分的错误,因此调用catch。 d不会被调用。 如果要忽略错误并继续执行Promise链,可以在c上添加一个catch。...当然,这种过早的捕获错误是不太好的,因为容易在调试过程忽略一些潜在的问题。 Promise finally finally方法只在 Promise 状态是 settled 时才会调用。...它执行Promises并将其添加到队列。 如果队列小于并发限制,它将继续添加到队列。 达到限制后,我们使用Promise.race等待一个承诺完成,因此可以将其替换为新的承诺

3.2K30

Vue 前后端交互基础

♞ 对象的状态不受外界影响。Promise 对象代表一个异步操作,有三种状态:pending(进行)、fulfilled(已成功)和 rejected(已失败)。...只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是 Promise 这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。   ...函数的作用是,将 Promise 对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。   ...0: 请求初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理...(error){ // 处理错误请求 console.log(error) }); ☞ 响应拦截器 axios.interceptors.response.use(function(res) {

2K50

常见的8个前端防御性编程方案

关于前端防御性编程 我们大多数情况可能遇到过,后端的由于同时请求人数过多,或者数据量过大,又或者是因为异常导致服务异常,接口请求失败,然后前端出现白屏或者报错 还有一种情况,是前端自身写的代码存在一些缺陷...js对象初始化属性值是undefined,从undefined读取属性就会导致这个错误(同理,null也一样) 如何避免?...遇到是空值的时候便会返回undefined. 2.前端接口层面的错误机制捕获 前端的接口调用,一般都比较频繁,我们这时候可以考虑使用单例模式,将所有的axios请求都用一个函数封装一层。...统一可以在这个函数catch捕获接口调用时候的未知错误,伪代码如下: function ajax(url,data,method='get'){ const promise = axios[method...错误边界在渲染期间、生命周期方法和整个组件树的构造函数捕获错误

1K20

Fetch还是Axios——哪个更适合HTTP请求

我们还可以将 config 对象定义变量,然后像下面的示例一样将其传递给 axios。...在一个较大的项目中,如果你创建了大量的调用,那么使用 axios 来避免重复代码会更舒服。 错误处理 在这一点上,我们还需要给 axios 点赞,因为处理错误是非常容易的。...如果出现像 404 这样的错误响应,promise 就会被拒绝并返回一个错误,所以我们需要捕获一个错误,我们可以检查它是什么类型的错误,就是这样。让我们看看代码示例。...,当响应良好时,我返回了数据,但是如果请求以任何方式失败,我就能够检查 .catch() 部分错误类型并返回正确的消息。...,我已经在承诺对象检查了代码状态,如果响应有状态 ok,那么我就可以处理并使用 .json() 方法,但如果没有,我必须在 .then() 里面返回错误

4.6K20

基于TypeScript封装Axios笔记(四)

=> { 7 console.log(e) 8}) 如果在请求的过程中发生任何错误,我们都可以在 reject 回调函数捕获到。...处理网络异常错误 当网络出现异常(比如不通)的时候发送请求会触发 XMLHttpRequest 对象实例的 error 事件,于是我们可以在 onerror 的事件回调函数捕获此类错误‍。...对于一个正常的请求,往往会返回 200-300 之间的 HTTP 状态码,对于不在这个区间的状态码,我们也把它们认为是一种错误的情况做处理。...接着我们在 handleResponse 函数对 request.status 的值再次判断,如果是 2xx 的状态码,则认为是一个正常的请求,否则抛错‍。...错误信息增强 需求分析 我们已经捕获了几类 AJAX 的错误,但是对于错误信息提供的非常有限,我们希望对外提供的信息不仅仅包含错误文本信息,还包括了请求对象配置 config,错误代码 code,XMLHttpRequest

85110

:第十五章 - 传统开发模式下的 axios 使用入门

axios ,我们发起一个 http 请求后,在 then 回掉方法中进行请求成功后的数据处理,在 catch 回掉方法捕获请求失败的信息。...这里 data 属性显示的就是整个的用户数据集合,在实际使用,你需要与 http 响应状态码进行结合,考虑如果后端出现错误如何使前端知晓,从而相对友好的通知用户。...与 get 请求相似,使用 axios 发起 post 请求也是在 then 回掉方法获取接口返回值,在 catch 回掉方法捕获错误信息。...在每一个通过 axios 发起请求的 then 回掉方法,我们都需要对获取到响应状态码进行判断,判断接口的调用是否成功。   ...例如,当调用接口不成功时,http 响应状态 400,同时返回错误信息,我们完全可以在拦截器中进行判断,当所有的接口响应状态 400 时,弹出后端返回的错误信息。

1.4K30

记得有一次面试被虐的题,Promise 完整指南

1.2 Promise 状态 Promise 可以分为四个状态: ⏳ Pending:初始状态,异步操作仍在进行。...Promise then then方法可以让异步操作成功或失败时得到通知。 它包含两个参数,一个用于成功执行,另一个则在发生错误时使用。...由于我们正在处理 .then(..., onError)部分的错误,因此调用catch。 d不会被调用。 如果要忽略错误并继续执行Promise链,可以在c上添加一个catch。...当然,这种过早的捕获错误是不太好的,因为容易在调试过程忽略一些潜在的问题。 Promise finally finally方法只在 Promise 状态是 settled 时才会调用。...它执行Promises并将其添加到队列。 如果队列小于并发限制,它将继续添加到队列。 达到限制后,我们使用Promise.race等待一个承诺完成,因此可以将其替换为新的承诺

2.3K20

10分钟了解JavaScript AsyncAwait

1、自动将常规函数转换为承诺。 2、当调用异步函数时,请使用其主体返回的内容进行解析。 3、异步函数允许使用await。 Await - 暂停异步函数的执行。...我们将编写一个使用AXIOS库的函数,并将HTTP GET请求发送到 xxx.json。 我们必须等待服务器响应,所以这个HTTP请求自然是异步的。 下面我们可以看到相同的函数实现了两次。...我们将有效地将执行时间减少到最慢请求的时间(getValueB - 4秒),而不是时间的总和。 处理Async / Await错误 ?...Async / Await的另一个好处是它允许我们在try / catch块捕获任何意外错误。...,或我们在try块编写的任何其他失败代码所引发的错误

1.7K40

vue3 + vite 进行axios请求封装及接口API的统一管理

一、前言 这篇文章跟vite关系不大,下篇写环境变量配置的时候就是vite相关了,今天这里主要讲一下在vue3axios的实战用法以及Api的统一管理,手把手教学望各位在这里能碰擦出灵感的火花,放飞五彩的思绪...二、目录结构 src目录下新建api文件, api.ts 进行接口API的统一管理 axios.ts 封装请求配置拦截器 status.ts 管理接口返回状态码 三、axios.ts 代码内逐行解释...: message = "请求错误(400)"; break; case 401: message = "授权,...= "服务实现(501)"; break; case 502: message = "网络错误(502)";...`; }; 复制代码 五、api.ts 引入axios导出的request,按功能模块进行接口的管理 import { request } from '.

13.6K61
领券