欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

前端學(xué)習(xí)11 axios二次封裝

1. axios概念

axios是一個基于Promise的HTTP客戶端,可以用于瀏覽器和Node.js環(huán)境。axios支持所有現(xiàn)代瀏覽器和Node.js,可以用于發(fā)送GET、POST、PUT、DELETE等HTTP請求,并且支持請求和相應(yīng)攔截、自動轉(zhuǎn)換數(shù)據(jù)格式等功能。

2. Axios的核心

1.Promise 基礎(chǔ)

Axios 基于 Promise,這意味著所有的請求都是異步的,并且可以使用 .then 和 .catch 方法來處理成功和失敗的情況。

2.請求配置

每次發(fā)送請求時,可以傳遞一個配置對象,包含 URL、方法、請求頭、請求體等信息。

3.攔截器

Axios 支持請求和響應(yīng)攔截器,可以在請求發(fā)送前或響應(yīng)接收后進行一些預(yù)處理或后處理操作。

4.錯誤處理

Axios 提供了統(tǒng)一的錯誤處理機制,可以通過 .catch 方法捕獲請求過程中發(fā)生的任何錯誤。

5.取消請求

Axios 支持取消請求,可以在請求發(fā)送后隨時取消。

6.并發(fā)請求

Axios 提供了 axios.all 和 axios.spread 方法,可以同時發(fā)送多個請求,并在所有請求完成后處理結(jié)果。

3. Axios的基本使用

Axios常用的幾種請求方法:get,post,put,patch,delete

get:一般用于獲取數(shù)據(jù)

post:一般用于提交數(shù)據(jù)(表單提交與文件上傳)

patch:更新數(shù)據(jù)(只將修改的數(shù)據(jù)推送到后端(服務(wù)端))

put:更新數(shù)據(jù)(所有數(shù)據(jù)推送到服務(wù)端)

delete:刪除數(shù)據(jù)

//引入 axios
import axios from 'axios'

//默認是get 請求
axios({
  //需要請求的URL地址
  url: 'http://123.207.32.32:8000/home/multidata'
}).then(res => {
  //輸出請求成功的數(shù)據(jù)
  console.log(res);
})

axios({
  url:'http://123.207.32.32:8000/home/data',
  // 專門針對get請求的參數(shù)拼接
  prams:{
    type:'pop',
    page:1
  }
}).then(res=>{
  console.log(res);
})

4. axios 二次封裝

二次封裝的必要性:

  1. 代碼復(fù)用

在多個地方重復(fù)編寫同樣的請求代碼,不僅繁瑣且容易出錯。通過二次封裝,我們可以將相同的請求邏輯抽象出來,形成統(tǒng)一的API接口,方便各個組件調(diào)用。

  1. 統(tǒng)一處理請求和響應(yīng)

在數(shù)據(jù)請求時,我們通常需要處理請求的頭、參數(shù)、響應(yīng)的格式等。通過二次封裝,可以將這些邏輯集中處理,避免每次請求都寫冗余的代碼。

  1. 異常處理

在實際應(yīng)用中,網(wǎng)絡(luò)請求常常會因多種原因失敗。通過封裝,可以在一個地方統(tǒng)一處理錯誤,方便管理和維護。

  1. 拓展功能

對于一些特定項目需求,比如添加請求攔截器、響應(yīng)攔截器,或者實現(xiàn)請求的重試機制,二次封裝提供了靈活的方式來實現(xiàn)這一功能。

4.1 創(chuàng)建Axio實例

首先,創(chuàng)建一個Axios實例,以便于配置和管理。

// axiosInstance.js
import axios from 'axios';

const axiosInstance = axios.create({
    baseURL: ' // API基礎(chǔ)路徑
    timeout: 10000, // 請求超時時間
    headers: {
        'Content-Type': 'application/json',
    },
});

// 請求攔截器
axiosInstance.interceptors.request.use(
    config => {
        // 可以在發(fā)送請求之前做一些處理,如添加token
        const token = localStorage.getItem('token');
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
        return config;
    },
    error => {
        // 處理請求錯誤
        return Promise.reject(error);
    }
);

// 響應(yīng)攔截器
axiosInstance.interceptors.response.use(
    response => {
        // 可以對響應(yīng)數(shù)據(jù)進行處理
        return response.data;
    },
    error => {
        // 處理響應(yīng)錯誤
        console.error(error);
        return Promise.reject(error);
    }
);

export default axiosInstance;

4.2 封裝請求方法

接下來,我們可以將常用的請求方法進行封裝,以便于在各個組件中調(diào)用

// apiService.js
import axiosInstance from './axiosInstance';

export const getData = (url, params) => {
    return axiosInstance.get(url, { params });
};

export const postData = (url, data) => {
    return axiosInstance.post(url, data);
};

export const putData = (url, data) => {
    return axiosInstance.put(url, data);
};

export const deleteData = (url) => {
    return axiosInstance.delete(url);
};

4.3 使用Axios封裝的好處

通過上述代碼,我們在項目中可以簡化請求的調(diào)用,并且能夠方便地處理請求和響應(yīng)。

// 示例使用
import { getData, postData } from './apiService';

getData('/users', { id: 1 })
    .then(data => {
        console.log(data);
    })
    .catch(error => {
        console.error('獲取用戶數(shù)據(jù)失敗:', error);
    });

postData('/users', { name: 'Jack', age: 30 })
    .then(data => {
        console.log('用戶創(chuàng)建成功:', data);
    })
    .catch(error => {
        console.error('創(chuàng)建用戶失敗:', error);
    });
#前端學(xué)習(xí)#
全部評論

相關(guān)推薦

評論
6
7
分享

創(chuàng)作者周榜

更多
牛客網(wǎng)
??推髽I(yè)服務(wù)