【vue2】axios請求與axios攔截器的使用詳解

1d43f75f092a4050a8ce31e2d85f6868.gif

🥳博???????主:初映CY的前說(前端領域)

🌞個人信條:想要變成得到,中間還有做到!

🤘本文核心:當我們在路由跳轉前與后我們可實現觸發的操作

【前言】ajax是一種在javaScript代碼中發請求并獲取響應數據的技術,我們的axios是一個別人封裝好的、用來發ajax請求的工具。那么我們發送請求與響應數據可以用來做什么呢?這樣做有什么好處呢?可以實現——當我們不刷新頁面的情況下,我們從服務器獲取請求的數據,以局部更新我們定點的數據而不是我們整個頁面的刷新。


目錄

一、axios

1.1axios的請求方式

1.2請求方式的傳參特點

1.3【經典面試題】get與post請求的區別

二、axios攔截器

2.1axios攔截器介紹

2.2axios攔截器使用

2.3總結axios攔截器


一、axios

1.1axios的請求方式

1.get

該請求方式常用于處理查詢操作,比如我們在瀏覽器上搜索基本上用的使get請求

2.post

該請求常用于我們處理新增操作,比如我們對我們頁面中的登錄時進行增加數據進服務器

3.put

該請求常用于我們處理全部更新操作,比如我們對我們頁面中的form表單進行全部修改

4.patch

該請求常用于我們處理局部更新操作,比如我們對我們頁面中的form表單進行全部修改

5.delete

該請求常用于我們處理刪除數據操作,處理頁面上需要刪除的信息常需要使用該請求方式

1.2請求方式的傳參特點

  • get常用于請求行傳參
  • post 、put、patch常用于請求體傳參
  • delete常用于請求行/請求參數傳參

1.3【經典面試題】get與post請求的區別

1.位置不同。我們的get是寫在請求行中,post則是寫在請求體中。也就是一個可以在地址欄可以看到我們的信息(get),一個需要按下F12在調試里面看我們傳遞的信息

2.速度不同。使用get因為有大小限制的原因,因此數據傳輸的速度長比post請求快

3.大小不同。get寫在地址欄上面,因此有長度的限制,最大長度為2k左右,而我們的post寫在請求體中沒有大小的限制

4.安全性不同。get的參數可以直接看到,post參數需要按下F12來查看


二、axios攔截器

2.1axios攔截器介紹

【授人以魚不如授人以漁】我們通過官網出的文件來進行一個講解:

請求攔截器:處理我們在發送請求之前需要經過的回調函數

相應攔截器:服務器響應之后返回給我們之前會被執行的回調函數

官網指南:攔截器 |?Axios 中文文檔 | Axios 中文網 (axios-http.cn)

下圖為上述超鏈接打開之后所看到的頁面:

?我們將上述代碼copy下來(這一大段代碼不需要背下來,到了工作當中也是直接去axios官方中直接copy下來我們進行應用即可呦)

1.便于封裝操作,我們常會建立一個專門的文件來寫下我們的攔截器同基地址作為第一次封裝。

【vue2小知識】實現axios的二次封裝_初映CY的前說的博客


// 添加請求攔截器
axios.interceptors.request.use(function (config) {// 在發送請求之前做些什么return config},function (error) {// 對請求錯誤做些什么return Promise.reject(error)}
)// 添加響應攔截器
axios.interceptors.response.use(function (response) {// 2xx 范圍內的狀態碼都會觸發該函數。// 對響應數據做點什么return response},function (error) {// 超出 2xx 范圍的狀態碼都會觸發該函數。// 對響應錯誤做點什么return Promise.reject(error)}
)

我們將官網的這段代碼獲取下來了,兄弟姐妹們有沒有發現官方甚至連注釋都給我們寫好了,很清晰明了的介紹了axios攔截器的用法,可知:

axios是我們用于發送Ajax請求之前以及我們在發送請求之后會執行的一個回調函數

2.2axios攔截器使用

1.在項目中先下載下我們的axios

至此我們知道了axiox的基本概念,那怎么在vue項目中引用?使用npm i axios 或者這 yarn add axios 將我們的axios下載下來(使用指南:npm的使用介紹)

2.項目中進行引入(與攔截器在同一個js文件)

import axios from 'axios'

?3.設置基地址,并且導入request

const request = axios.create({baseURL: 'http://ajax-api.itheima.net/api',timeout: 5000 // 超過5s請求停止
})export default request

4.根據接口文檔寫axios請求

import request from '@/utils/request'
export function homeAddress (pname, cname) {return request({url: '/area',method: 'GET',params: {pname: pname,cname: cname}})
}

?5.頁面中進行調用

<template><div class="div1"><button @click="getHomeAddress('江西省', '九江市')">點我獲取地址</button></div>
</template><script>
import { homeAddress } from './api/address'
export default {methods: {async getHomeAddress (pname, cname) {console.log(pname, cname)const res = await homeAddress(pname, cname)console.log('地址數據為:', res)}}
}
</script><style lang="less">
.div1 {background-color: teal;button {height: 50px;display: block;margin: 30px auto;}
}
</style>

?6.點擊按鈕發送請求

?7.配置axios攔截器

7.1請求攔截器

在發送請求之前會執行的一個回調,常用于將token添加進請求頭的Authorization中。

注意我們的axios實例是request因此從官網cv下來我們需要將axios改為request

// 添加請求攔截器
request.interceptors.request.use(function (config) {// 在發送請求之前做些什么console.log(config, 'config')console.log('嘿!我是在請求之前就執行的')return config // 發給服務器的信息},function (error) {// 對請求錯誤做些什么return Promise.reject(error)}
)

?7.2響應攔截器

從服務器獲取到了數據返回的時候先執行一個回調函數,常用于做狀態碼判斷與脫殼處理

// 添加響應攔截器
request.interceptors.response.use(function (response) {// 2xx 范圍內的狀態碼都會觸發該函數。// 對響應數據做點什么console.log(response, 'response')console.log('嘿!我是在請求之后就執行的,response為我們請求相應的結果')return response.data.data},function (error) {// 超出 2xx 范圍的狀態碼都會觸發該函數。// 對響應錯誤做點什么return Promise.reject(error)}
)

可以看到我們最終響應的值是我們response處理過的值

2.3總結axios攔截器

請求攔截器:在發送請求之前會執行的回調函數

響應攔截器:發送請求后服務器返回前執行的回調函數

——期待大家的關注與支持! 你的肯定是我更新的最大動力——

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

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

相關文章

低代碼開發與IT開發的區別

目錄 一、含義不同 二、開發門檻不同 三、兩者之間的區別 1、從技術特征來看 2、從目標開發者來看 四、低代碼平臺使用感受&#xff1f; &#xff08;1&#xff09;自定義模塊&#xff0c;滿足不同的業務需求 &#xff08;2&#xff09;工作流引擎&#xff0c;簡化復雜流程的管…

機器學習實戰-第4章 基于概率論的分類方法: 樸素貝葉斯

樸素貝葉斯 概述 貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。本章首先介紹貝葉斯分類算法的基礎——貝葉斯定理。最后,我們通過實例來討論貝葉斯分類的中最簡單的一種: 樸素貝葉斯分類。 貝葉斯理論 & 條件概率 貝葉斯理論 …

linux網絡之網絡層與數據鏈路層

文章目錄 一、網絡層 1.IP協議 2.IP協議頭格式 3.網段劃分 4.特殊ip地址 5.IP地址的數量限制 6.私有ip和公網IP 7.路由 二、數據鏈路層 1.以太網 2.以太網幀格式 3.MAC地址 4.對比理解MAC地址和IP地址 5.MTU 6.ARP協議 ARP協議的工作流程 ARP數據報的格式 7.DNS 8.ICMP協議 9.N…

839 - Not so Mobile (UVA)

題目鏈接如下&#xff1a; Online Judge 這道題劉汝佳的解法極其簡潔&#xff0c;用了20來行就解決了問題。膜拜…… 他的解法如下&#xff1a;天平&#xff08;UVa839紫書p157&#xff09;_天平 uva 839_falldeep的博客-CSDN博客 我寫了兩個&#xff08;都很冗長&#xff…

淺談電氣設備的絕緣在線監測與狀態維修探究

賈麗麗 安科瑞電氣股份有限公司 上海嘉定 201801 摘要&#xff1a;在線監測是控制好電氣設備絕緣的重要方式&#xff0c;為電力系統穩定奠定重要基礎。在線監測電氣設備時&#xff0c;要利用檢測技術促進電力系統運行效率提升&#xff0c;讓電氣設備在具體工作過程中發揮更大作…

升級jdk17過程中,原來的jdk8下的webservice客戶端怎樣處理

背景&#xff1a;之前jdk8環境下&#xff0c;使用的cxf框架&#xff0c;而且是動態加載解析作為客戶端。大家一直相處的很愉快。但是最近升級jdk17&#xff0c;發現cxf不好用了。網上百度&#xff0c;大部分都是說升級cxf版本&#xff0c;并且添加jaxb的相關依賴就可以了。但是…

在線接口測試工具fastmock使用

1、fastmock線上數據模擬器 在平時的項目測試中&#xff0c;尤其是前后端分離的時候&#xff0c;前端人員需要測試調用后端的接口&#xff0c;這個時候會出現測試不方便的情況。此時我們可以使用fastmock平臺在線上模擬出一個可以調用的接口&#xff0c;方便前端人員進行數據測…

C/C++---------------LeetCode第2540. 最小公共值

最小公共值 題目及要求哈希算法雙指針 題目及要求 給你兩個整數數組 nums1 和 nums2 &#xff0c;它們已經按非降序排序&#xff0c;請你返回兩個數組的 最小公共整數 。如果兩個數組 nums1 和 nums2 沒有公共整數&#xff0c;請你返回 -1 。 如果一個整數在兩個數組中都 至少…

categraf托管與自升級

categraf支持多種方式進行部署、托管&#xff0c;社區里部署和管理categraf也是五花八門&#xff0c;大家自己使用方便即可。 之前我們覺得大家通過ansible之類的工具批量下發/更新就能很簡單地完成任務&#xff0c;最近很多用戶咨詢我們關于categraf有沒有更方便的升級方式&am…

flink和機器學習模型的常用組合方式

背景 flink是一個低延遲高吞吐的系統&#xff0c;每秒處理的數據量高達數百萬&#xff0c;而機器模型一般比較笨重&#xff0c;雖然功能強大&#xff0c;但是qps一般都比較低&#xff0c;日常工作中&#xff0c;我們一般是如何把flink和機器學習模型組合起來一起使用呢? fli…

數據結構與算法【B樹】的Java實現+圖解

目錄 B樹 特性 實現 節點準備 大體框架 實現分裂 實現新增 實現刪除 完整代碼 B樹 也是一種自平衡的樹形數據結構&#xff0c;主要用于管理磁盤上的數據管理&#xff08;減少磁盤IO次數&#xff09;。而之前說的AVL樹與紅黑樹適合用于內存數據管理。存儲一個100w的數…

python每日一題——2字母異位詞分組

題目 給你一個字符串數組&#xff0c;請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。 字母異位詞 是由重新排列源單詞的所有字母得到的一個新單詞。 示例 1: 輸入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 輸出: [[“bat”],[“nat”…

新的centos7.9安裝jenkins—(一)

更多ruoyi-nbcio功能請看演示系統 gitee源代碼地址 前后端代碼&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后臺管理系統 因為是用java8&#xff0c;所以還是要最后java8版本的jenkins&#xff0c;版本號是2.346.3&#xff0c;后…

【Python】批量將PDG合成PDF,以及根據SS號重命名秒傳的文件

目錄 說明批量zip2pdf批量zip2pdf下載SS號重命名源代碼SS號重命名源代碼下載附錄&#xff0c;水文年鑒 說明 1、zip2pdf是一個開源軟件&#xff0c;支持自動化解壓壓縮包成PDG&#xff0c;PDG合成PDF&#xff0c;筆者在其基礎上做了部分修改&#xff0c;支持批量轉換。 2、秒…

【追求卓越11】算法--二叉樹

引導 接下來的幾節我們開始介紹非線性的數據結構--樹。樹的內容比較多也比較復雜。本節&#xff0c;我們只需要了解關于樹的一些基本概念。以及再進一步了解樹的相關內容--搜索二叉樹。該類型二叉樹在工作中&#xff0c;是我們常接觸的。該節我們介紹關于搜索二叉樹的相關操作&…

【華為數通HCIP | 網絡工程師】821-IGP高頻題、易錯題之OSPF(2)

個人名片&#xff1a; &#x1f43c;作者簡介&#xff1a;一名大三在校生&#xff0c;喜歡AI編程&#x1f38b; &#x1f43b;???個人主頁&#x1f947;&#xff1a;落798. &#x1f43c;個人WeChat&#xff1a;hmmwx53 &#x1f54a;?系列專欄&#xff1a;&#x1f5bc;?…

計算機中msvcr120.dll丟失怎樣修復?親測有效的5種方法分享

在計算機使用過程中&#xff0c;我們經常會遇到一些錯誤提示&#xff0c;其中之一就是“msvcr120.dll丟失”。這個錯誤通常會導致某些應用程序無法正常運行。那么&#xff0c;當我們遇到這個問題時&#xff0c;應該如何修復呢&#xff1f;本文將詳細介紹msvcr120.dll丟失的解決…

人工智能今天能為你做什么?生成式人工智能如何改變技術文檔領域

▲ 搜索“大龍談智能內容”關注GongZongHao▲ 作者 | Fabrice Lacroix 大型語言模型&#xff08;LLM&#xff09;和生成式人工智能&#xff08;GenAI&#xff09;&#xff0c;尤其是ChatGPT&#xff0c;這些是引領科技革新的新興技術。它們不僅在科技界引起了軒然大波&#x…

Web 自動化神器 TestCafe(三)—用例編寫篇

一、用例編寫基本規范 1、 fixture 測試夾具 使用 TestCafe 編寫測試用例&#xff0c;必須要先使用 fixture 聲明一個測試夾具&#xff0c;然后在這個測試夾具下編寫測試用例&#xff0c;在一個編寫測試用例的 js 或 ts 文件中&#xff0c;可以聲明多個測試夾具 fixture(測試…

【C++11】default、delete與Noncopyable

C11 oop中的default、delete與Noncopyable default 在C11標準中&#xff0c;可以使用default關鍵字來顯式地聲明默認的構造函數和析構函數。 使用default關鍵字可以用來顯式聲明默認的構造函數和析構函數。這樣做可以讓編譯器自動生成默認實現 –>->->關于構造函數…