首頁 > 軟體

axios二次封裝的詳細過程與跨域問題

2022-09-06 18:06:12

一,為什麼要對axios進行二次封裝?

答:主要是要用到請求攔截器和響應攔截器;

請求攔截器:可以在發請求之前可以處理一些業務

響應攔截器:當伺服器資料返回以後,可以處理一些事情

二,axios的二次封裝

2.1 安裝axios

在當前的專案路徑下安裝

cnpm install --save axios

安裝成功

2.2 通常情況下,專案都有一個api資料夾(axios二次封裝的資料夾)

a.建立一個api資料夾

b.在api資料夾下建立request.js(用於書寫axios二次封裝的程式碼)

c.在request.js書寫axios二次封裝的程式碼

//對axios進行二次封裝,將剛才下載好的axios匯入進來
import axios from "axios";

//1.利用axios物件的方法create,去建立一個axios範例
//2.requests就是axios,只不過稍微設定一下
const requests = axios.create({
	//設定物件
	//基礎路徑,發請求的時候,路徑當中會出現api,不用你手寫
	baseURL:'/api',
	//請求時間超過5秒
	timeout:5000
});
 //請求攔截器:在發請求之前,請求攔截器可以檢測到,可以在請求發出去之前做一些事情
 requests.interceptors.request.use((config)=>{
 	//config是個設定物件,物件裡面有一個屬性很重要,headers請求頭
 	return config;		
 });
 
 //響應攔截器:包含兩個函數(一個是成功返回的函數,一個是失敗的返回的函數)
 requests.intercetors.response.use((res)=>{
	//成功的回撥函數:伺服器響應資料回來以後,響應攔截器可以檢測到,可以做一些事情。
	return res.date;	
},(erroe)=>{
	return promise.reject(new Error('faile'))
});
//對外暴露requests(axios的二次封裝)
export default requests;

d.對api進行統一管理 (請求的介面比較多,需要統一管理)

1.在api資料夾新建一個index.js,用於管理介面

2.在index.js書寫程式碼

//匯入剛才寫好的axios二次封裝的requests
import requests from "./request";
//三級聯動介面
///api/product/getBaseCategoryList get 無引數
//發請求:axios發請求返回結果promise物件
export const reqCategoryList = ()=>{
	//由於前面設定了基礎路徑,所以不用加/api
	return requests({url:'/product/getBaseCategoryList',method:'get'}
});

3.跨域問題

什麼是跨域:協定,域名,埠號不同請求,稱之為跨域

例:http://localhost:8000/#/home —前端專案的本地伺服器

http://39.98.123.211 —調取資料的後臺伺服器

直接調取後臺伺服器資料的話,會出現404

4.解決跨域問題(3種:JSONP,CROS和代理)

我們用代理解決,在vue.config.js設定如下程式碼

//代理跨域
  devServer:{
    proxy: {
      "/api": {
      //後臺伺服器地址
        target: "http://39.98.123.211",
       
      }
    }
  }

完成

總結

到此這篇關於axios二次封裝的詳細過程與跨域問題的文章就介紹到這了,更多相關axios二次封裝內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com