vue2中使用axios及axios攔截器的配置教程
一、vue2項目中如何實現(xiàn)異步請求
1、axios:是一個基于Promise的網(wǎng)絡(luò)請求庫。
既可以在node.js(服務(wù)器端)使用,也可以在瀏覽器端使用
(1)在node.js中使用的原生的http模塊
(2)在瀏覽器中使用的XMLHttpRequest
2、vue中的使用方法
(1)安裝:npm install axios
? (2)引用方法: ?
A、原生的方式(不推薦使用)
axios({ url: 'http://localhost:8089/students/test', //遠(yuǎn)程服務(wù)器的url method: 'get' //請求方式 }).then(res=>{ this.students = res.data }).catch(e=>{ console.log(e) }) //缺點:每個使用axios的組件都需要導(dǎo)入
強(qiáng)調(diào):axios對服務(wù)器端數(shù)據(jù)的封裝
? res.config:響應(yīng)信息的配置情況
? res.data:響應(yīng)的數(shù)據(jù)
? res.headers:響應(yīng)頭信息(信息的大小、信息的類型)
? res.request:異步的請求對象(XMLHttpRequest)
? res.status:請求-響應(yīng)的狀態(tài)碼(200)
? res.statusText:請求-響應(yīng)狀態(tài)碼對應(yīng)的文本信息
? B、在項目的main.js文件中導(dǎo)入axios,將其寫入Vue的原型中(推薦使用)
//該文件是腳手架項目中的main.js import axios from "axios"; Vue.prototype.$http = axios //在Vue的原型上添加一個$http屬性,該屬性保存了axios axios.defaults.baseURL = 'http://localhost:8089'
在組件中通過this.$http的方式來使用
this.$http.get('http://localhost:8089/students/test').then(res=>{ this.students = res.data }).catch(e=>{ console.log(e) })
缺點:只能在vue2中使用,vue3中不能用 C、將axios單獨封裝到某個配置文件中(在配置文件中單獨封裝axios實例)—— (推薦使用)
在\src\assets靜態(tài)資源文件夾下創(chuàng)建axios配置文件
//配置文件:axiosapi.js import axios from "axios"; const axiosapi = axios.create({ baseURL: 'http://localhost:3000', //基礎(chǔ)的服務(wù)器地址 timeout: 5000 //連接超時的時間(單位是毫秒) }) export default axiosapi //axiosapi是axios的實例
在組件中使用如下:
import $http from '../config/axiosapi' //$http是在導(dǎo)入時自定義的命名可變的 $http.get('/students/test').then(res=>{ this.students = res.data }).catch(e=>{ console.log(e) })
優(yōu)點:既可以在Vue2中使用,也可以在Vue3中使用
3、axios中不同請求方式向服務(wù)器提交數(shù)據(jù)的格式:
(1)get方式請求:服務(wù)器端通過 req.query.參數(shù)名 來接收
? 第一種:直接將請求參數(shù)綁在url地址上。
第二種:通過params方式進(jìn)行提交
(2)post方式請求:服務(wù)器端通過 req.body.參數(shù)名 來接收
(3)put方式請求:和post方式一樣 // 傳參的方式
? (4)delete方式請求:和get方式一樣 // 傳參的方式
二、axios攔截器的配置
1、axios模塊的作用:是對基于http請求的封裝。
在瀏覽器對異步請求對象XMLHttpRequest進(jìn)行封裝
2、攔截器: ?
(1)請求攔截器:對客戶端發(fā)起的請求進(jìn)行統(tǒng)一的前期處理
(token、時間戳、cookie等) ?
(2)響應(yīng)攔截器:對服務(wù)器端響應(yīng)給客戶端的數(shù)據(jù)統(tǒng)一進(jìn)行處理之后再發(fā)給客戶端
axios配置文件如下:
import axios from "axios"; //1. 創(chuàng)建axios實例,配置基礎(chǔ)路徑 const axiosapi = axios.create({ baseURL:'http://localhost:3000', timeout:5000,//連接超時 }); //2. 定義請求攔截器:給所有請求都帶上token axiosapi.interceptors.request.use((req)=>{ let token = sessionStorage.getItem('Auth');//獲取頁面存儲的token if (token) { req.headers['Auth'] = token;//將token添加至請求頭對象的Auth屬性中 } return req; },(error)=>{//返回錯誤的信息 return Promise.reject(error); }); //3. 定義響應(yīng)攔截器: 對服務(wù)器響應(yīng)客戶端的數(shù)據(jù)進(jìn)行統(tǒng)一處理 axiosapi.interceptors.response.use(res=>{ //3.1 對響應(yīng)數(shù)據(jù)進(jìn)行處理 let data = res.data; let code = data.code; if(code === 200){ //請求成功時,將res.data對象返回給響應(yīng)對象 return data; } else { return Promise.reject(data); } },(error)=>{ return Promise.reject(error); }) //4. 導(dǎo)出axios實例,供組件異步請求使用 export default axiosapi;
總結(jié)
到此這篇關(guān)于vue2中使用axios及axios攔截器的配置的文章就介紹到這了,更多相關(guān)vue2 axios攔截器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue2.0利用vue-resource上傳文件到七牛的實例代碼
本篇文章主要介紹了Vue2.0利用vue-resource上傳文件到七牛的實例代碼,具有一定的參考價值,有興趣的可以了解一下2017-07-07vue新手入門出現(xiàn)function () { [native code]&nbs
這篇文章主要介紹了vue新手入門出現(xiàn)function () { [native code] }錯誤的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04vue 全局封裝loading加載教程(全局監(jiān)聽)
這篇文章主要介紹了vue 全局封裝loading加載教程(全局監(jiān)聽),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11useEffect理解React、Vue設(shè)計理念的不同
這篇文章主要為大家介紹了useEffect理解React、Vue設(shè)計理念的不同詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Vue使用axios發(fā)送請求簡單實現(xiàn)代碼
axios是一個基于Promise的,發(fā)送http請求的一個工具庫,并不是vue中的第三方插件,使用時不能通過“Vue.use()”安裝插件,需要在原型上進(jìn)行綁定2023-04-04Vuex modules模式下mapState/mapMutations的操作實例
這篇文章主要介紹了Vuex modules 模式下 mapState/mapMutations 的操作實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10