最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

三分鐘讓你快速學會axios在vue項目中的基本用法(推薦!)

 更新時間:2022年04月25日 10:24:54   作者:檸檬樹上檸檬果檸檬樹下你和我  
Axios是一個基于Promise用于瀏覽器和nodejs的HTTP客戶端,下面這篇文章主要給大家介紹了如何通過三分鐘讓你快速學會axios在vue項目中的基本用法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

提示:本篇詳解axios在vue項目中的實例。在使用Vue.js框架開發(fā)前端項目時,會經(jīng)常發(fā)送ajax請求服務(wù)端接口,在開發(fā)過程中,需要對axios進一步封裝,方便在項目中的使用。

Axios簡介

axios框架全稱(ajax – I/O – system):

基于promise用于瀏覽器和node.js的http客戶端,因此可以使用Promise API

一、axios是干啥的

說到axios我們就不得不說下Ajax。在舊瀏覽器頁面在向服務(wù)器請求數(shù)據(jù)時,因為返回的是整個頁面的數(shù)據(jù),頁面都會強制刷新一下,這對于用戶來講并不是很友好。并且我們只是需要修改頁面的部分數(shù)據(jù),但是從服務(wù)器端發(fā)送的卻是整個頁面的數(shù)據(jù),十分消耗網(wǎng)絡(luò)資源。而我們只是需要修改頁面的部分數(shù)據(jù),也希望不刷新頁面,因此異步網(wǎng)絡(luò)請求就應(yīng)運而生。

Ajax(Asynchronous JavaScript and XML):

異步網(wǎng)絡(luò)請求。Ajax能夠讓頁面無刷新的請求數(shù)據(jù)。

實現(xiàn)ajax的方式有多種,如jQuery封裝的ajax,原生的XMLHttpRequest,以及axios。但各種方式都有利弊:

  • 原生的XMLHttpRequest的配置和調(diào)用方式都很繁瑣,實現(xiàn)異步請求十分麻煩
  • jQuery的ajax相對于原生的ajax是非常好用的,但是沒有必要因為要用ajax異步網(wǎng)絡(luò)請求而引用jQuery框架

Axios(ajax i/o system):

這不是一種新技術(shù),本質(zhì)上還是對原生XMLHttpRequest的封裝,可用于瀏覽器和nodejs的HTTP客戶端,只不過它是基于Promise的,符合最新的ES規(guī)范。具備以下特點:

  • 在瀏覽器中創(chuàng)建XMLHttpRequest請求
  • 在node.js中發(fā)送http請求
  • 支持Promise API
  • 攔截請求和響應(yīng)
  • 轉(zhuǎn)換請求和響應(yīng)數(shù)據(jù)
  • 取消要求
  • 自動轉(zhuǎn)換JSON數(shù)據(jù)
  • 客戶端支持防止CSRF/XSRF(跨域請求偽造)

二、安裝使用

安裝有三種方式:

npm安裝

npm install axios

bower安裝

bower install axios

通過cdn引入

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

在vue項目的main.js文件中引入axios

import axios from 'axios'
Vue.prototype.$axios = axios

在組件中使用axios

<script>
	export default {
		mounted(){
			this.$axios.get('/goods.json').then(res=>{
				console.log(res.data);
			})
		}
	}
</script>

三、Axios請求方式

1、axios可以請求的方法:

  • get:獲取數(shù)據(jù),請求指定的信息,返回實體對象
  • post:向指定資源提交數(shù)據(jù)(例如表單提交或文件上傳)
  • put:更新數(shù)據(jù),從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容
  • patch:更新數(shù)據(jù),是對put方法的補充,用來對已知資源進行局部更新
  • delete:請求服務(wù)器刪除指定的數(shù)據(jù)

2、get請求

示例代碼

方法一

 //請求格式類似于 http://localhost:8080/goods.json?id=1
this.$axios.get('/goods.json',{
    			params: {
                    id:1
                }
			}).then(res=>{
					console.log(res.data);
				},err=>{
					console.log(err);
			})

方法二

this.$axios({
		method: 'get',
		url: '/goods.json',
    	params: {
            id:1
        }
	}).then(res=>{
		console.log(res.data);
	},err=>{
		console.log(err);
	})

3、post請求

post請求一般分為兩種類型

1.form-data 表單提交,圖片上傳、文件上傳時用該類型比較多

2. application/json 一般是用于 ajax 異步請求

示例代碼

方法一

this.$axios.post('/url',{
				id:1
			}).then(res=>{
				console.log(res.data);
			},err=>{
				console.log(err);
			})

方法二

$axios({
	method: 'post',
	url: '/url',
	data: {
		id:1
	}
}).then(res=>{
	console.log(res.data);
},err=>{
	console.log(err);
})

form-data請求

let data = {
	//請求參數(shù)
}

let formdata = new FormData();
for(let key in data){
	formdata.append(key,data[key]);
}

this.$axios.post('/goods.json',formdata).then(res=>{
	console.log(res.data);
},err=>{
	console.log(err);
})

4、put和patch請求

示例代碼

put請求

this.$axios.put('/url',{
				id:1
			}).then(res=>{
				console.log(res.data);
			})

patch請求

this.$axios.patch('/url',{
				id:1
			}).then(res=>{
				console.log(res.data);
			})

5、delete請求

示例代碼

參數(shù)以明文形式提交

this.$axios.delete('/url',{
				params: {
					id:1
				}
			}).then(res=>{
				console.log(res.data);
			})

參數(shù)以封裝對象的形式提交

this.$axios.delete('/url',{
				data: {
					id:1
				}
			}).then(res=>{
				console.log(res.data);
			})

//方法二
axios({
    method: 'delete',
    url: '/url',
    params: { id:1 }, //以明文方式提交參數(shù)
    data: { id:1 } //以封裝對象方式提交參數(shù)
}).then(res=>{
	console.log(res.data);
})

6、并發(fā)請求

并發(fā)請求:同時進行多個請求,并統(tǒng)一處理返回值

示例代碼

 this.$axios.all([
	this.$axios.get('/goods.json'),
	this.$axios.get('/classify.json')
]).then(
	this.$axios.spread((goodsRes,classifyRes)=>{
		console.log(goodsRes.data);
		console.log(classifyRes.data);
	})
)

四、Axios實例

1、創(chuàng)建axios實例

示例代碼

let instance = this.$axios.create({
				baseURL: 'http://localhost:9090',
				timeout: 2000
			})
			
instance.get('/goods.json').then(res=>{
	console.log(res.data);
})

可以同時創(chuàng)建多個axios實例。

axios實例常用配置:

  • baseURL 請求的域名,基本地址,類型:String
  • timeout 請求超時時長,單位ms,類型:Number
  • url 請求路徑,類型:String
  • method 請求方法,類型:String
  • headers 設(shè)置請求頭,類型:Object
  • params 請求參數(shù),將參數(shù)拼接在URL上,類型:Object
  • data 請求參數(shù),將參數(shù)放到請求體中,類型:Object

2、axios全局配置

示例代碼

//配置全局的超時時長
this.$axios.defaults.timeout = 2000;
//配置全局的基本URL
this.$axios.defaults.baseURL = 'http://localhost:8080';

3、axios實例配置

示例代碼

let instance = this.$axios.create();
instance.defaults.timeout = 3000;

4、axios請求配置

示例代碼

this.$axios.get('/goods.json',{
				timeout: 3000
			}).then()

以上配置的優(yōu)先級為:請求配置 > 實例配置 > 全局配置

五、攔截器

攔截器:在請求或響應(yīng)被處理前攔截它們

1、請求攔截器

示例代碼

this.$axios.interceptors.request.use(config=>{
				// 發(fā)生請求前的處理

				return config
			},err=>{
				// 請求錯誤處理

				return Promise.reject(err);
			})

//或者用axios實例創(chuàng)建攔截器
let instance = $axios.create();
instance.interceptors.request.use(config=>{
    return config
})

2、響應(yīng)攔截器

示例代碼

this.$axios.interceptors.response.use(res=>{
				//請求成功對響應(yīng)數(shù)據(jù)做處理

				return res //該返回對象會傳到請求方法的響應(yīng)對象中
			},err=>{
				// 響應(yīng)錯誤處理

				return Promise.reject(err);
			})

3、取消攔截

示例代碼

let instance = this.$axios.interceptors.request.use(config=>{
				config.headers = {
					token: ''
				}
				return config
			})
			
//取消攔截
this.$axios.interceptors.request.eject(instance);

六、錯誤處理

示例代碼

this.$axios.get('/url').then(res={

			}).catch(err=>{
				//請求攔截器和響應(yīng)攔截器拋出錯誤時,返回的err對象會傳給當前函數(shù)的err對象
				console.log(err);
			})

七、取消請求

示例代碼

let source = this.$axios.CancelToken.source();

this.$axios.get('/goods.json',{
				cancelToken: source
			}).then(res=>{
				console.log(res)
			}).catch(err=>{
				//取消請求后會執(zhí)行該方法
				console.log(err)
			})

//取消請求,參數(shù)可選,該參數(shù)信息會發(fā)送到請求的catch中
source.cancel('取消后的信息');

結(jié)語

到此這篇關(guān)于axios在vue項目中的基本用法的文章就介紹到這了,更多相關(guān)axios在vue項目的基本用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Vue 中實現(xiàn)循環(huán)渲染多個相同echarts圖表

    在Vue 中實現(xiàn)循環(huán)渲染多個相同echarts圖表

    這篇文章主要介紹了在Vue 中實現(xiàn)循環(huán)渲染多個相同echarts圖表,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue動態(tài)添加路由addRoutes之不能將動態(tài)路由存入緩存的解決

    vue動態(tài)添加路由addRoutes之不能將動態(tài)路由存入緩存的解決

    這篇文章主要介紹了vue動態(tài)添加路由addRoutes之不能將動態(tài)路由存入緩存的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • vue中用js如何實現(xiàn)循環(huán)可編輯表格

    vue中用js如何實現(xiàn)循環(huán)可編輯表格

    這篇文章主要介紹了vue中用js如何實現(xiàn)循環(huán)可編輯表格,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue ECharts設(shè)置主題實現(xiàn)方法介紹

    Vue ECharts設(shè)置主題實現(xiàn)方法介紹

    這篇文章主要介紹了Vue ECharts設(shè)置主題,本文通過實例代碼圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • 基于VUE實現(xiàn)的九宮格抽獎功能

    基于VUE實現(xiàn)的九宮格抽獎功能

    這篇文章主要介紹了基于VUE實現(xiàn)的九宮格抽獎功能,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • vue+iview動態(tài)渲染表格詳解

    vue+iview動態(tài)渲染表格詳解

    這篇文章主要為大家詳細介紹了vue+iview動態(tài)渲染表格的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • vue實現(xiàn)數(shù)字加逗號分隔

    vue實現(xiàn)數(shù)字加逗號分隔

    在Vue項目中,對數(shù)字進行格式化,實現(xiàn)帶小數(shù)的數(shù)字三位一分隔的效果,可以通過自定義過濾器來實現(xiàn),使用JavaScript的toLocaleString方法可以方便地將數(shù)字轉(zhuǎn)換成帶逗號的格式
    2024-10-10
  • vue-nuxt?登錄鑒權(quán)的實現(xiàn)

    vue-nuxt?登錄鑒權(quán)的實現(xiàn)

    本文主要介紹了vue-nuxt?登錄鑒權(quán)的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Vue.js中前端如何處理從后端返回的Excel文件流詳解

    Vue.js中前端如何處理從后端返回的Excel文件流詳解

    這篇文章主要介紹了如何在Vue項目中使用axios處理后端返回的Excel文件流,并提供下載功能,文中通過代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2025-01-01
  • vue中template模板編譯的過程全面剖析

    vue中template模板編譯的過程全面剖析

    這篇文章主要介紹了vue中template模板編譯的過程全面剖析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04

最新評論

收藏| 怀远县| 法库县| 昌黎县| 和平县| 建平县| 沙坪坝区| 台南县| 威信县| 台东县| 和平区| 北安市| 保康县| 弥勒县| 永川市| 呈贡县| 明水县| 钦州市| 娱乐| 赫章县| 富民县| 寻乌县| 镇赉县| 宣化县| 泰来县| 喀什市| 西安市| 南康市| 涞水县| 贵港市| 长海县| 历史| 盐城市| 卢氏县| 治多县| 万荣县| 林西县| 九龙坡区| 定南县| 临猗县| 亳州市|