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

使用Axios結(jié)合Typescript二次封裝完整詳細(xì)場(chǎng)景使用案例

 更新時(shí)間:2024年11月09日 09:29:41   作者:夲奮亻Jay  
本文詳細(xì)介紹了如何使用TypeScript對(duì)Axios進(jìn)行二次封裝,以提高HTTP請(qǐng)求的統(tǒng)一管理和可維護(hù)性,通過(guò)創(chuàng)建Axios實(shí)例、封裝請(qǐng)求和響應(yīng)處理、錯(cuò)誤處理以及創(chuàng)建特定的API服務(wù),可以實(shí)現(xiàn)更加一致和方便的API調(diào)用,需要的朋友可以參考下

前言

Axios 是一個(gè)基于 promise 的 HTTP 客戶(hù)端,用于瀏覽器和 node.js。二次封裝 Axios 主要是為了統(tǒng)一管理 HTTP 請(qǐng)求,例如設(shè)置統(tǒng)一的請(qǐng)求前綴、頭部、超時(shí)時(shí)間,統(tǒng)一處理請(qǐng)求和響應(yīng)的格式,以及錯(cuò)誤處理等。

以下是一個(gè)使用 TypeScript 進(jìn)行 Axios 二次封裝的詳細(xì)場(chǎng)景使用案例:

1. 創(chuàng)建 Axios 實(shí)例

首先,創(chuàng)建一個(gè) Axios 實(shí)例,并配置通用參數(shù)。

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 10000, // 請(qǐng)求超時(shí)時(shí)間
  headers: {'Content-Type': 'application/json'}
});

export default instance;

2. 統(tǒng)一請(qǐng)求處理

封裝請(qǐng)求方法,包括統(tǒng)一的請(qǐng)求前綴、頭部處理等。

// http.ts
import axios from './path/to/axiosInstance';

// 添加一個(gè)通用的請(qǐng)求前綴
function request(url: string, config?: AxiosRequestConfig) {
  const fullPath = `/api/${url}`;

  // 可以在這里添加通用的 header 或其他配置
  const defaultConfig = {
    headers: {
      'Authorization': `Bearer ${localStorage.getItem('token')}`
    }
  };

  return axios({
    url: fullPath,
    ...config,
    ...defaultConfig
  });
}

export default request;

3. 響應(yīng)攔截器

處理響應(yīng)攔截器,統(tǒng)一處理響應(yīng)數(shù)據(jù)格式。

// http.ts (繼續(xù)上面的代碼)
import axios, { AxiosInstance } from 'axios';

// 響應(yīng)攔截器
instance.interceptors.response.use(response => {
  // 對(duì)響應(yīng)數(shù)據(jù)做點(diǎn)什么
  return response.data;
}, error => {
  // 對(duì)響應(yīng)錯(cuò)誤做點(diǎn)什么
  return Promise.reject(error);
});

export default instance;

4. 錯(cuò)誤處理

統(tǒng)一處理 HTTP 請(qǐng)求錯(cuò)誤。

// http.ts (繼續(xù)上面的代碼)
import { AxiosError } from 'axios';

// 使用封裝的請(qǐng)求函數(shù)
function handleError(error: AxiosError) {
  if (error.response) {
    // 請(qǐng)求已發(fā)出,服務(wù)器響應(yīng)了狀態(tài)碼 2xx 之外的其他狀態(tài)
    console.error(error.response.data);
    console.error(error.response.status);
    console.error(error.response.headers);
  } else if (error.request) {
    // 請(qǐng)求已發(fā)出但沒(méi)有收到響應(yīng)
    console.error(error.request);
  } else {
    // 發(fā)生了觸發(fā)請(qǐng)求錯(cuò)誤的問(wèn)題
    console.error('Error', error.message);
  }
  return Promise.reject(error);
}

export { handleError };

5. 使用封裝的 HTTP 客戶(hù)端

在組件或其他服務(wù)中使用封裝的 HTTP 客戶(hù)端進(jìn)行請(qǐng)求。

// SomeComponent.vue
import http from './path/to/http';
import { handleError } from './path/to/http';

export default {
  async created() {
    try {
      const response = await http('/user', {
        method: 'get'
      });
      this.user = response.data;
    } catch (error) {
      handleError(error);
    }
  }
};

6. 封裝特定的 API 請(qǐng)求

創(chuàng)建特定的 API 服務(wù)文件,如用戶(hù)服務(wù)。

// api/user.ts
import http from '../http';

export const getUser = (userId: string) => http(`/users/${userId}`);
export const updateUser = (userId: string, userData: object) => http(`/users/${userId}`, {
  method: 'put',
  data: userData
});

// 其他 API 調(diào)用 ...

7. 使用特定的 API 服務(wù)

在組件中使用特定的 API 服務(wù)。

// SomeComponent.vue
import { getUser, updateUser } from './api/user';

export default {
  methods: {
    async fetchUser() {
      try {
        const user = await getUser('123');
        this.user = user;
      } catch (error) {
        handleError(error);
      }
    },
    async saveUser() {
      try {
        await updateUser('123', { name: 'New Name' });
      } catch (error) {
        handleError(error);
      }
    }
  }
};

通過(guò)上述步驟,你可以創(chuàng)建一個(gè)可維護(hù)性高、易于使用的 HTTP 客戶(hù)端,它包括統(tǒng)一的配置、攔截器、錯(cuò)誤處理和 API 調(diào)用封裝。這使得在項(xiàng)目中進(jìn)行 API 請(qǐng)求變得更加一致和方便。

總結(jié)

到此這篇關(guān)于使用Axios結(jié)合Typescript二次封裝完整詳細(xì)場(chǎng)景使用案例的文章就介紹到這了,更多相關(guān)Axios結(jié)合Typescript二次封裝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于js遍歷表格的實(shí)例

    關(guān)于js遍歷表格的實(shí)例

    js可以利用dom非常輕松的就可以遍歷一個(gè)表格。當(dāng)然只要是dom中有的所有對(duì)象都可以通過(guò)js來(lái)訪問(wèn)和處理
    2013-07-07
  • JavaScript電子時(shí)鐘倒計(jì)時(shí)

    JavaScript電子時(shí)鐘倒計(jì)時(shí)

    這篇文章主要介紹了JavaScript電子時(shí)鐘倒計(jì)時(shí)的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的朋友可以參考一下
    2016-01-01
  • DOM操作原生js 的bug,使用jQuery 可以消除的解決方法

    DOM操作原生js 的bug,使用jQuery 可以消除的解決方法

    下面小編就為大家?guī)?lái)一篇DOM操作原生js 的bug,使用jQuery 可以消除的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • 微信小程序設(shè)置滾動(dòng)條過(guò)程詳解

    微信小程序設(shè)置滾動(dòng)條過(guò)程詳解

    這篇文章主要介紹了微信小程序設(shè)置滾動(dòng)條過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • JavaScript中的noscript元素屬性位置及作用介紹

    JavaScript中的noscript元素屬性位置及作用介紹

    Javascript插入到XHTML中要使用script元素,使用這個(gè)元素可以把Javascript嵌入到XHTML頁(yè)面中,讓腳本與標(biāo)記混合在一起,感興趣的朋友可以了解下
    2013-04-04
  • 實(shí)現(xiàn)在?Chrome?中執(zhí)行?JavaScript?代碼

    實(shí)現(xiàn)在?Chrome?中執(zhí)行?JavaScript?代碼

    這篇文章主要介紹了實(shí)現(xiàn)在?Chrome?中執(zhí)行?JavaScript?代碼,下面來(lái)介紹如何在?Chrome?中打開(kāi)開(kāi)發(fā)者工具,以及如何在開(kāi)發(fā)者工具中運(yùn)行調(diào)試?JavaScript?代碼,具有一的的參考價(jià)值,需要的朋友可以參考一下
    2022-03-03
  • JS中的hasOwnProperty()和isPrototypeOf()屬性實(shí)例詳解

    JS中的hasOwnProperty()和isPrototypeOf()屬性實(shí)例詳解

    hasOwnProperty()和isPrototypeOf()這兩個(gè)屬性都是Object.prototype所提供:Object.prototype.hasOwnProperty()和Object.prototype.isPropertyOf(),下面給大家介紹這兩個(gè)屬性的方法和使用,一起看下吧
    2016-08-08
  • css+js制作不定高度展開(kāi)收起動(dòng)畫(huà)詳解

    css+js制作不定高度展開(kāi)收起動(dòng)畫(huà)詳解

    這篇文章主要介紹了css+js制作不定高度展開(kāi)收起動(dòng)畫(huà)詳解的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 22種JavaScript中數(shù)組常用API總結(jié)

    22種JavaScript中數(shù)組常用API總結(jié)

    在前端開(kāi)發(fā)中,數(shù)組是一種常見(jiàn)且重要的數(shù)據(jù)結(jié)構(gòu),本文主要介紹了前端中數(shù)組常用的API,包括添加、刪除、截取、合并、轉(zhuǎn)換等操作,希望對(duì)大家有所幫助
    2023-05-05
  • JavaScript 加號(hào)(+)運(yùn)算符號(hào)

    JavaScript 加號(hào)(+)運(yùn)算符號(hào)

    在一些框架中看到了類(lèi)似這樣的寫(xiě)法:+new Date();感覺(jué)有些怪,查閱了相關(guān)資料和一些網(wǎng)友的幫助.對(duì)此用法解釋如下,希望對(duì)大家有所幫助,不合適的地方請(qǐng)大家指正!
    2009-12-12

最新評(píng)論

太原市| 民县| 嘉定区| 灵石县| 海盐县| 青河县| 新田县| 资中县| 常宁市| 汕尾市| 定结县| 平定县| 化隆| 太保市| 盐津县| 江口县| 天等县| 盐池县| 麦盖提县| 皋兰县| 施甸县| 醴陵市| 宜兴市| 舒城县| 曲麻莱县| 广宗县| 县级市| 射阳县| 兴城市| 内江市| 张家口市| 潮州市| 印江| 建水县| 阿拉善左旗| 五河县| 乐东| 邹平县| 吴旗县| 安图县| 乐业县|