欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue2中使用axios及axios攔截器的配置教程

 更新時(shí)間:2023年05月08日 11:36:47   作者:。Idea  
眾所周知Axios是一個(gè)基于promise的HTTP庫(kù),可以用在瀏覽器和 node.js中,下面這篇文章主要給大家介紹了關(guān)于vue2中使用axios及axios攔截器的配置的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、vue2項(xiàng)目中如何實(shí)現(xiàn)異步請(qǐng)求

1、axios:是一個(gè)基于Promise的網(wǎng)絡(luò)請(qǐng)求庫(kù)。

既可以在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' //請(qǐng)求方式
    }).then(res=>{
      this.students = res.data
    }).catch(e=>{
      console.log(e)
    })
//缺點(diǎn):每個(gè)使用axios的組件都需要導(dǎo)入

強(qiáng)調(diào):axios對(duì)服務(wù)器端數(shù)據(jù)的封裝

? res.config:響應(yīng)信息的配置情況

? res.data:響應(yīng)的數(shù)據(jù)

? res.headers:響應(yīng)頭信息(信息的大小、信息的類(lèi)型)

? res.request:異步的請(qǐng)求對(duì)象(XMLHttpRequest)

? res.status:請(qǐng)求-響應(yīng)的狀態(tài)碼(200)

? res.statusText:請(qǐng)求-響應(yīng)狀態(tài)碼對(duì)應(yīng)的文本信息

B、在項(xiàng)目的main.js文件中導(dǎo)入axios,將其寫(xiě)入Vue的原型中(推薦使用)

//該文件是腳手架項(xiàng)目中的main.js
import axios from "axios";
Vue.prototype.$http = axios //在Vue的原型上添加一個(gè)$http屬性,該屬性保存了axios
axios.defaults.baseURL = 'http://localhost:8089'

 在組件中通過(guò)this.$http的方式來(lái)使用

this.$http.get('http://localhost:8089/students/test').then(res=>{
          this.students = res.data
}).catch(e=>{
          console.log(e)
})

缺點(diǎn):只能在vue2中使用,vue3中不能用 C、將axios單獨(dú)封裝到某個(gè)配置文件中(在配置文件中單獨(dú)封裝axios實(shí)例)—— (推薦使用)

在\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  //連接超時(shí)的時(shí)間(單位是毫秒)
})
export default  axiosapi  //axiosapi是axios的實(shí)例

在組件中使用如下:

import $http  from '../config/axiosapi'  //$http是在導(dǎo)入時(shí)自定義的命名可變的
$http.get('/students/test').then(res=>{
          this.students = res.data
}).catch(e=>{
          console.log(e)
})

優(yōu)點(diǎn):既可以在Vue2中使用,也可以在Vue3中使用

3、axios中不同請(qǐng)求方式向服務(wù)器提交數(shù)據(jù)的格式:

(1)get方式請(qǐng)求:服務(wù)器端通過(guò) req.query.參數(shù)名 來(lái)接收

? 第一種:直接將請(qǐng)求參數(shù)綁在url地址上。

 第二種:通過(guò)params方式進(jìn)行提交

(2)post方式請(qǐng)求:服務(wù)器端通過(guò) req.body.參數(shù)名 來(lái)接收 

(3)put方式請(qǐng)求:和post方式一樣    // 傳參的方式

? (4)delete方式請(qǐng)求:和get方式一樣   // 傳參的方式

二、axios攔截器的配置

1、axios模塊的作用:是對(duì)基于http請(qǐng)求的封裝。

在瀏覽器對(duì)異步請(qǐng)求對(duì)象XMLHttpRequest進(jìn)行封裝

2、攔截器: ?

(1)請(qǐng)求攔截器:對(duì)客戶端發(fā)起的請(qǐng)求進(jìn)行統(tǒng)一的前期處理

                                (token、時(shí)間戳、cookie等) ?

(2)響應(yīng)攔截器:對(duì)服務(wù)器端響應(yīng)給客戶端的數(shù)據(jù)統(tǒng)一進(jìn)行處理之后再發(fā)給客戶端

axios配置文件如下:

import axios from "axios";
 
//1. 創(chuàng)建axios實(shí)例,配置基礎(chǔ)路徑
const axiosapi = axios.create({
    baseURL:'http://localhost:3000',
    timeout:5000,//連接超時(shí)
});
 
//2. 定義請(qǐng)求攔截器:給所有請(qǐng)求都帶上token
axiosapi.interceptors.request.use((req)=>{
    let token = sessionStorage.getItem('Auth');//獲取頁(yè)面存儲(chǔ)的token
    if (token) {
        req.headers['Auth'] = token;//將token添加至請(qǐng)求頭對(duì)象的Auth屬性中
    }
    return req;
},(error)=>{//返回錯(cuò)誤的信息
    return Promise.reject(error);
});
 
//3. 定義響應(yīng)攔截器: 對(duì)服務(wù)器響應(yīng)客戶端的數(shù)據(jù)進(jìn)行統(tǒng)一處理
axiosapi.interceptors.response.use(res=>{
    //3.1 對(duì)響應(yīng)數(shù)據(jù)進(jìn)行處理
    let data = res.data;
    let code = data.code;
    if(code === 200){
        //請(qǐng)求成功時(shí),將res.data對(duì)象返回給響應(yīng)對(duì)象
        return data;
    } else {
        return Promise.reject(data);
    }
},(error)=>{
    return Promise.reject(error);
})
 
//4. 導(dǎo)出axios實(shí)例,供組件異步請(qǐng)求使用
export default axiosapi;

總結(jié)

到此這篇關(guān)于vue2中使用axios及axios攔截器的配置的文章就介紹到這了,更多相關(guān)vue2 axios攔截器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論