国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于axios的兩種攔截方式:請求攔截和響應(yīng)攔截

這篇具有很好參考價值的文章主要介紹了關(guān)于axios的兩種攔截方式:請求攔截和響應(yīng)攔截。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

axios的兩種攔截方式



前言

提示:這里可以添加本文要記錄的大概內(nèi)容:

關(guān)于axios的interceptors(攔截器)


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、請求攔截

axios.interceptors.request.use() 請求攔截

axios.interceptors.request.use( function ( config ) { return config })
這個方法的參數(shù)是一個函數(shù),發(fā)送請求之前就會執(zhí)行這個函數(shù),函數(shù)里面的參數(shù)就是執(zhí)行這個函數(shù)攔截到的配置對象config

我們?yōu)槭裁匆稣埱髷r截?

答:可以發(fā)起請求之前,做一個攔截,把數(shù)據(jù)(參數(shù),配置…)做了處理再發(fā)送請求。

  • 因為post請求傳參需要用字符串的方式 axios.post(‘/type’,‘pageSize=2’).then(res=> {})
  • 但是寫對象的參數(shù),對我們開發(fā)會友好一點 axios.post(‘/type’,{pageSize: 2}).then(res=> {}),可是這樣會導(dǎo)致錯誤
    -axios響應(yīng)攔截,javascript,前端,html,vue.js,ajax - 所以我們就可以用請求攔截去處理: 把對象轉(zhuǎn)成表單類型的字符串
axios.defaults.baseURL = '路由接口的根地址'
// 假設(shè)每個接口都有一個固定的參數(shù)
// pageSize : 固定為2個

// 可以發(fā)起請求之前,做一個攔截,把數(shù)據(jù)(參數(shù),配置...)做了處理再發(fā)送請求
// 請求攔截

// 參數(shù)是一個函數(shù),發(fā)送請求之前就會執(zhí)行這個函數(shù),它的參數(shù)就是攔截到的配置對象
axios.interceptors.request.use(function(config){
	console.log(config) 
	// config 就是配置對象

	// 在這里可以修改config
	// 比如添加固定的參數(shù)
	config.params = {
		pageSize: 3
	}
	return config; // 返回配置對象, 不返回就沒有任何參數(shù)了
})

axios.get('/hot',{
	params: {
		pageSize: 2
	}
}).then(res=>{
	console.log(res.data)
})

axios.get('/soon').then(res=>{
	console.log(res.data)
})

我們打印一下config
axios響應(yīng)攔截,javascript,前端,html,vue.js,ajax
我們可以看到,在config屬性中添加了params屬性,并且單純的請求方法中傳的參數(shù)無效,但是請求攔截中傳遞的參數(shù)有效

對POST請求參數(shù)做配置,使我們傳參的時候可以寫成對象的形式

baseURL可以直接在請求攔截的config中配置
1. 第一種方法:手工拼接
axios.defaults.baseURL = '接口路由地址'
一 手工拼接的方式
// axios.interceptors.request.use(function(config){
	// 	// {type:'NBA',size:5,page:3}  -->  'type=NBA&size=5&page=3'
	// 	// console.log(config.data)
	// 	let str = '';
	// 	for(let item in config.data){
	// 		// console.log(item) key
	// 		// console.log(config.data[item]) value
	// 		str += item+'='+config.data[item]+'&'
	// 	}
	// 	// console.log(str.slice(0,-1))  
	// 	str = str.slice(0,-1) // 去掉最后一個&
	// 	config.data = str  // 拼接好的str賦值給config.data
	// 	return config;
	// })
	// 寫對象的參數(shù),對我們開發(fā)會友好一點
	// 我們就可以用請求去處理: 把對象轉(zhuǎn)成表單類型的字符串
	axios.post('/news', {type:'NBA',size:5,page:3}).then(res=>{
		console.log(res.data)
	})
2. 第二種方法:URLSearchParams

axios響應(yīng)攔截,javascript,前端,html,vue.js,ajax

// 二 使用 URLSearchParams的方式實現(xiàn)
axios.defaults.baseURL = '接口路由地址'
	axios.interceptors.request.use(function(config){
		// 1.創(chuàng)建URLSearchParams 實例
		let pData = new URLSearchParams();
		
		// 2. 遍歷參數(shù)對象
		for(let item in config.data){  
			// 3. 調(diào)用append()
			// 參數(shù)1:key   前面的值=
			// 參數(shù)2:value  =后面的值
			pData.append(item,config.data[item])
		}
		//params的結(jié)果就是拼接好的 表單類型參數(shù)的字符串  
		// console.log(params.toString())  
		config.data = pData
		return config
	})

// 寫對象的參數(shù),對我們開發(fā)會友好一點
// 我們就可以用請求去處理: 把對象轉(zhuǎn)成表單類型的字符串
axios.post('/news', {type:'NBA',size:5,page:3}).then(res=>{
	console.log(res.data)
})
3. 第三種方法: npm.js 下載qs工具包
import axios from 'axios';
import qs from 'qs'

// 1.創(chuàng)建實例
const myaxios = axios.create({
  baseURL: '請求路由地址'
})

// 請求攔截
myaxios.interceptors.request.use(function(config){
  // 使用qs 來處理post的參數(shù)
  config.data = qs.stringify(config.data)
  return config
})

二、響應(yīng)攔截

axios.interceptors.response.use() 響應(yīng)攔截

axios.interceptors.response.use( function ( res ) { return res } )
這個方法的參數(shù)是一個函數(shù),請求成功之前后就會執(zhí)行這個函數(shù),函數(shù)里面的參數(shù)就是執(zhí)行這個函數(shù)攔截到的結(jié)果數(shù)據(jù)

我們?yōu)槭裁匆鲰憫?yīng)攔截?

答:在請求成功之后,對數(shù)據(jù)有固定處理方式,就可以在響應(yīng)攔截里面做。比如直接返回data,減少返回數(shù)據(jù)獲取的代碼量;還有一些狀態(tài)的固定處理,不同的后端,他們代碼風格可能是不一樣。有些可能是用code 表示狀態(tài) eg:20000代表成功 50002沒有權(quán)限 …。還有些用status表示狀態(tài), eg: success 代表成功, fail代表失敗,只能要是后端代碼風格確定了,這些狀態(tài)通常是不會變的了。比如: 返回的請求失敗的狀態(tài)碼,那就可以做一個通用的處理,給一個彈框提示。
axios響應(yīng)攔截,javascript,前端,html,vue.js,ajax

對data和返回的狀態(tài)做處理

axios.defaults.baseURL = '路由接口地址'
// 響應(yīng)攔截
axios.interceptors.response.use(function(res){
	// console.log(res)
	if(res.data.code == '20000'){
		return res.data
	}else if(res.data.code == '50002') {
		alert('沒有權(quán)限')
		return res
	}else {
		alert('請求出錯')
		return res
	}
})

axios.post('/news', {type:'NBA',size:5,page:3}).then(res=>{
	console.log(res)
})

三、總結(jié)

html頁面中使用
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script type="text/javascript">
	axios.defaults.baseURL = '請求路由地址'
	axios.interceptors.request.use(function(config){
		let params = new URLSearchParams();
		for(let item in config.data){  
			params.append(item,config.data[item])
		}
		config.data = params
		return config
	})

	// 響應(yīng)攔截
	axios.interceptors.response.use(function(res){
		// console.log(res)
		if(res.data.code == '20000'){
			return res.data
		}else if(res.data.code == '50002') {
			alert('沒有權(quán)限')
			return res
		}else {
			alert('請求出錯')
			return res
		}
	})

	axios.post('/news', {type:'NBA',size:5,page:3}).then(res=>{
		console.log(res)
	})
</script>
</body>
</html>
Vue項目中使用
import axios from 'axios';
import qs from 'qs'

// 1.創(chuàng)建實例
const myaxios = axios.create({
  baseURL: '請求路由地址'
})

// 請求攔截
myaxios.interceptors.request.use(function(config){
  // 使用qs 來處理post的參數(shù)
  config.data = qs.stringify(config.data)
  return config
})

// 響應(yīng)攔截
myaxios.interceptors.response.use(function(res){
  return res.data
})

export default myaxios


提示:文章總結(jié):

以上就是今天要講的內(nèi)容,本文介紹了axios的兩種攔截,希望開開心心快快樂樂,無憂無慮沒有煩惱。文章來源地址http://www.zghlxwxcb.cn/news/detail-819964.html

到了這里,關(guān)于關(guān)于axios的兩種攔截方式:請求攔截和響應(yīng)攔截的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • axios 中使用請求響應(yīng)攔截器

    axios 中使用請求響應(yīng)攔截器

    axios 簡介: Axios 是一個 基于 promise 網(wǎng)絡(luò)請求庫 ,作用于 node.js 和瀏覽器 中。 它是 isomorphic 的(即同一套代碼可以運行在瀏覽器和node.js中)。在 服務(wù)端它使用原生 node.js http 模塊 , 而在 客戶端 (瀏覽端) 則使用 XMLHttpRequests 。 axios的特性: 從瀏覽器創(chuàng)建 XMLHttpRequests 從 node.js 創(chuàng)

    2024年02月16日
    瀏覽(21)
  • axios攔截器,如何批量處理請求響應(yīng)

    從瀏覽器創(chuàng)建 XMLHttpRequests 從 node.js 創(chuàng)建 http 請求 支持 Promise API 攔截請求和響應(yīng) 轉(zhuǎn)換請求和響應(yīng)數(shù)據(jù) 取消請求 自動轉(zhuǎn)換JSON數(shù)據(jù) 客戶端支持防御XSRF 在請求或響應(yīng)被 then 或 catch 處理前攔截它們。 新建request.js,寫入以下內(nèi)容: 在需要使用的頁面進行調(diào)用 上一步咱們將axios攔

    2024年02月13日
    瀏覽(30)
  • 封裝axios的兩種方式

    作為前端工程師,經(jīng)常需要對axios進行封裝以滿足復(fù)用的目的。在不同的前端項目中使用相同的axios封裝有利于保持一致性,有利于數(shù)據(jù)之間的傳遞和處理。本文提供兩種對axios進行封裝的思路。 首先導(dǎo)入了 axios, AxiosInstance和AxiosResponse模塊 ,用于創(chuàng)建一個http請求的實例和處理

    2024年02月08日
    瀏覽(13)
  • 簡單易懂:Axios 如何取消請求的兩種方法

    簡單易懂:Axios 如何取消請求的兩種方法

    在前端開發(fā)中,網(wǎng)絡(luò)請求是非常常見的操作。而有時候,我們可能需要在發(fā)送請求后取消它,比如用戶在請求還未完成時離開了當前頁面或者執(zhí)行了其他操作,本文將介紹如何在使用 Axios 發(fā)送請求時取消這些請求。 在 Axios 中,取消請求的基本思路是創(chuàng)建一個用于取消的標記

    2024年01月19日
    瀏覽(19)
  • uniapp 微信小程序 封裝axios 包含請求攔截、響應(yīng)攔截、無感刷新令牌功能

    前言: 1、為什么不適用uniapp自帶的請求功能? 答:uniapp自帶的請求功能,再刷新了令牌后,重新請求返回的數(shù)據(jù)無法返回給發(fā)起請求的方法。也就是說,刷新令牌后重新發(fā)起的請求和第一次發(fā)起請求的方法是割裂的。 2、封裝文件中,我設(shè)置了無感刷新令牌功能。我后臺的

    2024年02月03日
    瀏覽(21)
  • anxios封裝攔截器的兩種方式

    使用方法 講解:函數(shù)式通過調(diào)用方法創(chuàng)建axios實例,通過參數(shù)傳入基礎(chǔ)url,超時時間等定義參數(shù)。 使用時比較接近axios寫法。 使用方法 類方法: 通過創(chuàng)建一個類,傳入baseUrl,超時時間等自定義參數(shù)。使用時候調(diào)用類的方法實現(xiàn)創(chuàng)建axios實例。 兩種方法寫法不同,功能相同。

    2024年01月19日
    瀏覽(20)
  • Vue 網(wǎng)絡(luò)處理 - axios 異步請求的使用,請求響應(yīng)攔截器(最佳實踐)

    Vue 網(wǎng)絡(luò)處理 - axios 異步請求的使用,請求響應(yīng)攔截器(最佳實踐)

    目錄 一、axiox 1.1、axios 簡介 1.2、axios 基本使用 1.2.1、下載核心 js 文件. 1.2.2、發(fā)送 GET 異步請求 1.2.3、發(fā)送 POST?異步請求 1.2.4、發(fā)送 GET、POST 請求最佳實踐 1.3、請求響應(yīng)攔截器 1.3.1、攔截器解釋 1.3.2、請求攔截器的使用 1.3.3、響應(yīng)攔截器的使用 1.3.4、攔截器在 Vue 腳手架中的

    2024年02月04日
    瀏覽(22)
  • vue+axios——創(chuàng)建多個實例共用請求攔截器和響應(yīng)攔截器(403錯誤信息不提示bug解決)——基礎(chǔ)積累

    創(chuàng)建多個實例共用請求攔截器和響應(yīng)攔截器:使用的是函數(shù)的繼承,也就是 call() 方法,這個方法第一個參數(shù)就是 this ,后面的參數(shù)可以是一個也可以是多個。最后一定要記得要 return 出去,否則接口是拿不到數(shù)據(jù)的。 上面兩個文件合并后的處理如下: 在 main.js 中添加如下內(nèi)容

    2024年02月10日
    瀏覽(32)
  • axios和vite在本地開發(fā)環(huán)境配置代理的兩種方式,五分鐘學會

    axios和vite在本地開發(fā)環(huán)境配置代理的兩種方式,五分鐘學會

    如果你使用vue或者react開發(fā),就得使用axios吧,然后為了解決跨域問題,就得使用vite配置吧,那怎么協(xié)調(diào)配置它們兩個才能正常工作呢? 正常的流程:配置axios的baseURL,然后配置vite的proxy 配置axios的baseURL: 然后再配置vite的proxy:在vite.config.js中配置 如果你想將路徑重寫也是

    2024年02月04日
    瀏覽(21)
  • 關(guān)于windows自帶的兩種遠程訪問方式

    關(guān)于windows自帶的兩種遠程訪問方式

    實驗環(huán)境:兩臺非家庭版的windows系統(tǒng)(我使用的win7和xp系統(tǒng)),在同一網(wǎng)段下 關(guān)于windows的兩種遠程訪問方式: ? ? ? ? 1、將普通用戶添加到遠程桌面服務(wù)組(Remote Desktop Users組,該組賬戶專門用于為遠程訪問提供服務(wù)) ? ? ? ? 2、?telnet為用戶提供命令行遠程訪問權(quán)限 使

    2024年02月07日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包