fetch和axios請求的原理都是基於XMLHttpRerequst嗎?

王铁柱6發表於2024-12-06

不完全是。雖然 XMLHttpRequest 是 Ajax 的基礎,也是早期庫(例如 jQuery 的 $.ajax)的核心,但 Fetch API 和 Axios 的工作原理略有不同:

  • XMLHttpRequest: 這是一個老牌的瀏覽器 API,用於在瀏覽器和伺服器之間進行 HTTP 通訊。它提供了一種透過 JavaScript 傳送 HTTP 請求和接收響應的方法,是 Ajax 的基石。

  • Fetch API: Fetch API 是一個更現代的瀏覽器 API,旨在提供比 XMLHttpRequest 更簡潔、更易用的介面。它使用了 Promises,使非同步操作更容易處理。雖然 Fetch API 底層可能仍然依賴於 XMLHttpRequest 在某些瀏覽器實現中,但它抽象了底層的複雜性,並提供了更高階的功能,例如流式處理。 它本身並非直接基於 XMLHttpRequest,而是瀏覽器提供的更高階的介面。

  • Axios: Axios 是一個基於 Promise 的 HTTP 客戶端,可以在瀏覽器和 Node.js 中使用。它內部使用了 XMLHttpRequest (在瀏覽器中) 或 Node.js 的 http 模組 (在伺服器端) 來傳送請求。所以,在瀏覽器環境中,Axios 是基於 XMLHttpRequest 的。

總結一下:

  • Fetch API: 更現代的 API,提供了更簡潔的介面和更高階的功能,不一定直接依賴於 XMLHttpRequest
  • Axios: 基於 Promise 的 HTTP 客戶端,在瀏覽器中使用 XMLHttpRequest,在 Node.js 中使用 http 模組。

因此,只有 Axios 在瀏覽器環境中是明確基於 XMLHttpRequest 的。 Fetch API 則並非直接基於它,而是瀏覽器提供的更高階的介面,底層實現可能因瀏覽器而異。

相關文章