深入了解 Axios 攔截器

深入了解 Axios 攔截器

本文將向您介紹什么是 Axios 攔截器以及如何使用它們。通過分步指南和示例代碼,您將學習如何使用 Axios 攔截器來處理請求和響應,并添加授權和錯誤處理。

什么是 Axios 攔截器?

Axios 攔截器允許您在請求發送和響應接收過程中攔截、操作和修改它們。Axios 提供了兩種類型的攔截器:請求攔截器和響應攔截器。

請求攔截器允許您在發送請求之前修改請求的配置或添加自定義的頭部和標記。它們也可以用于添加身份驗證和授權令牌,以確保只有經過身份驗證的用戶才能訪問受保護的資源。

響應攔截器允許您在接收響應之前攔截和處理它們。它們可以用于處理響應錯誤和重定向,以及過濾或轉換響應數據。

使用 Axios 攔截器

讓我們以請求攔截器為例來學習如何使用 Axios 攔截器。在您的 JavaScript 文件中添加以下代碼:

import axios from ‘axios’;

axios.interceptors.request.use(
config => {
const token = localStorage.getItem(‘authToken’);
if (token) {
config.headers.Authorization = Bearer ${token};
}
return config;
},
error => {
return Promise.reject(error);
}
);
在上述代碼中,我們使用 .interceptors 屬性將請求攔截器添加到 Axios。.request.use() 方法接收兩個函數參數:第一個函數在發送請求之前被調用,它接收一個 Axios 請求配置對象,并返回一個新的配置對象。在上述代碼中,我們從本地存儲中獲取授權令牌,并把它添加到請求頭中的 Authorization 標頭中。

第二個函數是在請求發生錯誤時調用的。在這個例子中,我們簡單地返回一個被拒絕的 Promise 對象,以便在鏈式調用中處理錯誤。

接下來,讓我們學習如何使用響應攔截器。在您的 JavaScript 文件中添加以下代碼:

axios.interceptors.response.use(
response => {
if (response.data && response.data.error_code) {
return Promise.reject(response.data);
}
return response;
},
error => {
if (error.response && error.response.status === 401) {
localStorage.removeItem(‘authToken’);
window.location.href = ‘/login’;
}
return Promise.reject(error.response.data);
}
);
在上述代碼中,我們使用 .interceptors 屬性將響應攔截器添加到 Axios。.response.use() 方法接收兩個函數參數:第一個函數在成功響應時調用,它接收響應對象,并返回新的響應對象或 Promise 對象。在上述代碼中,我們檢查響應數據是否包含錯誤代碼,如果是,我們就返回一個被拒絕的 Promise 對象。否則,我們將返回原始響應對象。

第二個函數在響應發生錯誤時調用。在這個例子中,我們檢查響應狀態碼是否為 401(未經授權),如果是,我們就從本地存儲中刪除授權令牌,并重定向到登錄頁面。否則,我們返回響應數據的 Promise 對象,以便在鏈式調用中處理錯誤。

總結

通過本文,您學習了如何使用 Axios 攔截器來處理請求和響應,并添加授權和錯誤處理。您可以使用這些攔截器來添加自定義頭部、標記、身份驗證和授權令牌,并處理響應錯誤和重定向。Axios 提供了許多其他配置選項和參數來進一步定制和控制請求和響應的行

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/208992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208992.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208992.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里云SLB的使用總結

一、什么是SLB 實現k8s的服務service的一種推薦方式,也是服務上云后,替代LVS的一個必選產品。 那么它有什么作用呢? 1、負載均衡,是它與生俱來的。可以配置多個服務器組:包括虛擬服務器組、默認服務器組、主備服務器…

markdown快捷鍵

markdown快捷鍵 快捷鍵 Markdown 圖標 快捷鍵 撤銷 Ctrl Z 重做 Ctrl Y 加粗 Ctrl B 斜體 Ctrl I 標題 Ctrl Shift H 有序列表 Ctrl Shift O 無序列表 Ctrl Shift U 待辦列表 Ctrl Shift C 插入代碼 Ctrl Shift K 插入鏈接 Ctrl Shift L 插入圖片 Ctrl Shif…

JUnit 之初體驗

文章目錄 1.定義2.引入1)使用 Maven 工具2)使用 Gradle 工具3)使用 Jar 包 2.樣例0)前提1)測試類2)測試方法3)測試斷言4)實施 總結 1.定義 JUnit 是一個流行的 Java 單元測試框架&a…

H5ke14--1--拖放

介紹drag,drop 一.被拖動元素,目標(釋放區) 元素要設置dragable屬性:true,false,auto 被拖動元素上面有三個事件,drag,dragend,按下左鍵,移動種,鼠標松,這三個事件一般只用獲取我們的被拖動元素 冒泡:event是可以繼承的,mouseevent鼠標事件,dragevent拖放事件,前面都是一個…

ubuntu 修改系統時間,解決更新軟件報錯問題

ubuntu在更新軟件時出現E: Release file for http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease 錯誤 網上解決方法一:修改系統時間 修改時區 timedatectl set-timezone Asia/Shanghai 查看當前時間 date -R date -s “2023-12-5 15:57:15” 查看…

C++11多線程基本知識點

文章目錄 進程和線程的概念進程和線程的區別 C多線程的基本內容創建線程std::thread線程IDstd::thread對象生命周期和線程等待和分離線程參數傳遞引用類型成員函數作為線程入口和線程基類的封裝lambda臨時函數作為線程入口函數lambda函數lambda線程 多線程同步和通信多線程通信…

Python基礎(一、安裝環境及入門)

一、安裝 Python 訪問 Python 官方網站 并點擊 "Downloads"(下載)。 在下載頁面中,你會看到最新的 Python 版本。選擇與你的操作系統相對應的 Windows 安裝程序并下載。 雙擊下載的安裝程序,運行安裝向導。 在安裝向…

$(this) 和 this 關鍵字在 jQuery 中有何不同?

在jQuery中,$(this)是一個特殊的語法,用于使用jQuery庫中的函數和方法來操作當前選擇的元素。這個語法將原生的JavaScript "this" 對象包裝成一個jQuery對象,使開發者可以使用jQuery提供的豐富功能來處理當前元素。 而在一般的Java…

Redis KEY*模糊查詢導致速度慢、阻塞其他 Redis 操作

Redis KEY*模糊查詢導致交互速度慢、阻塞其他 Redis 操作 查詢速度慢的原因 在Redis中,使用通配符 KEYS 命令進行鍵的模糊匹配(比如 KEYS key*)可能會導致性能問題,尤其是在數據集較大時。這是因為 KEYS 命令的實現需要遍歷所有…

多個大模型高效部署平臺的實戰教程

大家好,我是herosunly。985院校碩士畢業,現擔任算法研究員一職,熱衷于機器學習算法研究與應用。曾獲得阿里云天池比賽第一名,CCF比賽第二名,科大訊飛比賽第三名。擁有多項發明專利。對機器學習和深度學習擁有自己獨到的見解。曾經輔導過若干個非計算機專業的學生進入到算法…

mybatis和mybatisplus中對 同namespace 中id重復處理邏輯源碼解析

一、背景 同事在同一個mapper.xml (namespace相同),復制了一個sql沒有修改id,正常啟動項目。但是我以前使用mybatis的時候如果在namespace相同情況下,id重復,項目會報錯無法正常啟動,后來看代碼…

用戶帳戶限制(例如,時間限制)會阻止你登錄。請與系統管理員或技術支持聯系以獲取幫助。

用戶帳戶限制(例如,時間限制)會阻止你登錄。請與系統管理員或技術支持聯系以獲取幫助。 在Windows11遠程連接Windows10時提示【用戶帳戶限制(例如,時間限制)會阻止你登錄。請與系統管理員或技術支持聯系以獲取幫助。】我們該如何解決: 1、在…

React聚焦渲染速度

目錄 一、引言 二、React.js的渲染速度機制 虛擬DOM Diff算法 三、優化React.js的渲染速度 避免不必要的重新渲染 使用合適的數據結構和算法 使用React Profiler工具進行性能分析 四、實際案例分析 五、總結 一、引言 在當今的Web開發領域,React.js無疑是…

C語言——螺旋矩陣(注釋詳解)

一、前言: 螺旋矩陣是指一個呈螺旋狀的矩陣,它的數字由第一行開始到右邊不斷變大,向下變大,向左變大,向上變大,如此循環。 二、市面解法(較難理解,代碼長度短): 根據階數…

【ARMv8 SIMD和浮點指令編程】浮點數據轉換指令——數據類型互轉必備

浮點數據轉換指令包括不同的浮點精度數之間的轉換,還包括整型和浮點數之間的轉化。 在了解數據轉換指令前,必須學習 IEEE 754 定義的五種舍入規則。前兩條規則舍入到最接近的值,其他的稱為定向舍入: 舍入到最接近的值 Round to nearest, ties to even – rounds to the n…

Python 多線程和多進程并發執行

Python 多線程和多進程并發執行 引言多線程主要特點和概念多線程的使用threading 模塊concurrent.futures 線程池 多進程主要特點和概念:多進程的使用:multiprocessing 模塊concurrent.futures 進程池 選擇合適的進程數 總結I/O 密集型任務CPU 密集型任務…

js過濾的方法示例

以下是幾個常用的 JavaScript 過濾方法示例: filter() filter() 方法創建一個新的數組,其中包含通過測試函數的所有元素。該方法不會改變原始數組。 const numbers [1, 2, 3, 4, 5]; const filteredNumbers numbers.filter(num > num > 3); c…

銷售技巧培訓之如何提高建材銷售技巧

建材銷售市場競爭也日趨激烈。在這個充滿挑戰與機遇的市場中,掌握一定的銷售技巧對于一個建材銷售人員來說至關重要。本文將結合實際案例,探討一些實用的建材銷售技巧,幫助你更好地拓展業務。 一、了解客戶需求 在銷售過程中,首先…

sql2005日志文件過大如何清理

由于安裝的時候沒有計劃好空間,默認裝在系統盤,而且又沒有做自動備份、截斷事務日志等,很快LDF文件就達到十幾G,或者幾十G ,此時就不得不處理了。 備份和計劃就不說了,現在就說下怎么把它先刪除吧&#xf…

【深度學習】一維數組的 K-Means 聚類算法理解

剛看了這個算法,理解如下,放在這里,備忘,如有錯誤的地方,請指出,謝謝 需要做聚類的數組我們稱之為【源數組】 需要一個分組個數K變量來標記需要分多少個組,這個數組我們稱之為【聚類中心數組】…