axios面試題詳解

一、axios簡介

axios是一個基於Promise的HTTP客戶端,可以用於瀏覽器和Node.js環境中發送請求。它具有以下幾個特點:

1、支持瀏覽器和Node.js


//axios在瀏覽器和Node.js中均可使用
import axios from 'axios';

axios.get('/user')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

2、支持Promise API


//使用Promise API發送請求
axios.get('/user')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

3、支持請求和相應攔截器


//使用請求和相應攔截器對請求和響應進行操作
axios.interceptors.request.use(function (config) {
    //在發送請求之前做些什麼
    return config;
  }, function (error) {
    //對請求錯誤做些什麼
    return Promise.reject(error);
});

4、支持取消請求


//通過cancelToken參數來實現取消請求
const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('/user', {
  cancelToken: source.token
}).catch(function (thrown) {
  if (axios.isCancel(thrown)) {
    console.log('請求被取消', thrown.message);
  } else {
    // 處理錯誤
  }
});

// 取消請求(message 參數是可選的)
source.cancel('用戶取消操作');

5、支持多種Content-Type


//使用不同的Content-Type發送請求
axios.post('/user', {
    firstName: 'John',
    lastName: 'Doe'
  }, {
    headers: {
      'Content-Type': 'application/json'
    }
  });

axios.post('/user', new FormData(), {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });

二、axios面試題的解答

以下是面試中可能會遇到的幾個問題,給出解答:

1、axios和fetch的區別是什麼?

axios和fetch都是用於發送請求的工具,它們有以下區別:

1、fetch是瀏覽器原生提供的API,而axios是第三方庫;

2、fetch默認不會帶cookie,需要添加credentials: ‘include’來開啟,而axios默認會攜帶cookie;

3、axios支持IE8+,而fetch不支持IE;

4、axios可以對請求和響應進行攔截,fetch不支持;

5、axios支持在請求參數中添加cancelToken來取消請求,fetch不支持。

2、如何在axios中同時發送多個請求?

axios提供了並發請求的功能,可以使用axios.all或axios.spread方法來同時發送多個請求。其中,axios.all會將多個請求封裝成一個Promise實例,同時觸發所有請求,並等待所有請求都響應之後再返回結果;axios.spread用於將返回的結果數組展開,分別傳入回調函數中。


axios.all([
    axios.get('/user/1'),
    axios.get('/user/2')
  ])
  .then(axios.spread(function (user1, user2) {
    console.log(user1, user2);
  }));

3、如何在axios中設置全局默認的請求頭?

可以使用axios.defaults.headers對象來設置全局默認的請求頭:


axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
axios.defaults.headers.post['Content-Type'] = 'application/json';

4、如何使用axios.CancelToken取消請求?

使用axios.CancelToken.source()方法可以創建一個cancelToken對象。將cancelToken對象作為請求參數的cancelToken屬性值即可實現取消請求。


const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('/user', {
  cancelToken: source.token
}).catch(function (thrown) {
  if (axios.isCancel(thrown)) {
    console.log('請求被取消', thrown.message);
  } else {
    // 處理錯誤
  }
});

source.cancel('用戶取消操作');

5、如何使用axios實現文件上傳?

可以使用FormData對象來提交文件上傳請求。使用headers配置項中的’Content-Type’為’multipart/form-data’即可實現文件上傳功能。


const formData = new FormData();
formData.append('file', file);

axios.post('/upload', formData, {
  headers: {
    'Content-Type': 'multipart/form-data'
  }
});

三、總結

axios是一個功能強大的HTTP客戶端工具,它支持瀏覽器和Node.js環境中發送請求,可以使用Promise API、請求和相應攔截器、取消請求等功能,同時還支持多種Content-Type類型和並發請求。在開發過程中,合理使用axios的功能可以提高開發效率、優化用戶體驗。

原創文章,作者:FXTIS,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/371374.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FXTIS的頭像FXTIS
上一篇 2025-04-23 00:48
下一篇 2025-04-23 00:48

相關推薦

  • 使用axios獲取返回圖片

    使用axios獲取返回圖片是Web開發中很常見的需求。本文將介紹如何使用axios獲取返回圖片,並從多個方面進行詳細闡述。 一、安裝axios 使用axios獲取返回圖片前,首先需…

    編程 2025-04-29
  • Axios請求數據亂碼問題解決

    本文將從以下三個方面詳細闡述Axios請求數據亂碼問題的原因和解決方法: 一、設置請求頭 Axios請求數據亂碼的原因可能是因為請求時沒有設置請求頭的編碼方式,而且默認的編碼方式是…

    編程 2025-04-28
  • 源碼審計面試題用法介紹

    在進行源碼審計面試時,可能會遇到各種類型的問題,本文將以實例為基礎,從多個方面對源碼審計面試題進行詳細闡述。 一、SQL注入 SQL注入是常見的一種攻擊方式,攻擊者通過在輸入的參數…

    編程 2025-04-27
  • 神經網絡代碼詳解

    神經網絡作為一種人工智能技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網絡的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網絡模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁盤中。在執行sync之前,所有的文件系統更新將不會立即寫入磁盤,而是先緩存在內存…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變量讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分佈式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25

發表回復

登錄後才能評論