」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 阿克西奧斯

阿克西奧斯

發佈於2024-08-06
瀏覽:802

Axios

慢慢閱讀程式碼,並根據需要跟隨資訊流和資訊格式的變更

概述

Axios 是一個流行的 JavaScript 程式庫,用於從瀏覽器和 Node.js 發出 HTTP 請求。它是一個開源項目,旨在簡化向 REST 端點發送非同步 HTTP 請求以及執行 CRUD(建立、讀取、更新、刪除)操作的過程。

創作者

Axios 由 Matt Zabriskie 創建。該專案由社區維護,可在 GitHub 上取得。

受益人

Axios 有利於:

  • 前端開發人員:用於從Web應用程式發出HTTP請求。
  • 後端開發人員:用於在 Node.js 應用程式中整合 HTTP 請求。
  • 全端開發人員:用於在客戶端和伺服器端處理HTTP請求。

優點

  1. 基於 Promise:讓非同步請求和回應的處理變得更加容易。
  2. 攔截器:允許在處理請求或回應之前對其進行修改。
  3. 自動 JSON 資料轉換:簡化 JSON 資料的處理。
  4. CSRF 保護:幫助跨站點請求偽造保護。
  5. 請求和回應轉換:請求和回應的自訂轉換。
  6. 錯誤處理:與其他方法相比,簡化了錯誤處理。
  7. 廣泛的瀏覽器支援:適用於所有現代瀏覽器和 Node.js。

用法

使用地點

  • Web 應用程式:與後端服務通訊。
  • Node.js 應用程式:向其他 API 或服務發出 HTTP 請求。
  • 行動應用程式:作為 React Native 等框架的一部分。

失敗的地方

  1. 重型應用程式:由於記憶體消耗,可能不是非常大的資料傳輸的最佳選擇。
  2. 瀏覽器限制:除非正確處理 CORS,否則受同源策略限制。
  3. 依賴項大小:需要管理的額外依賴項,這可能是簡約專案的問題。

為什麼要使用它

  • 易於使用:用於執行 HTTP 請求的簡單 API。
  • 靈活性:易於配置和擴展。
  • 社區支持:廣泛採用和廣泛的社區支持。

為什麼不使用它

  • 庫大小:新增另一個相依性的開銷。
  • 替代方案:優先選擇 Fetch API 或其他函式庫(如 request 或 superagent)。

如何使用

安裝

npm install axios

基本用法

const axios = require('axios');

// Performing a GET request
axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error('Error fetching data:', error);
  });

詳細用法及註釋

const axios = require('axios');

// Create an instance of axios with default settings
const instance = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 1000,
  headers: { 'X-Custom-Header': 'foobar' }
});

// Interceptor to log request details
instance.interceptors.request.use(request => {
  console.log('Starting Request', request);
  return request;
});

// Interceptor to log response details
instance.interceptors.response.use(response => {
  console.log('Response:', response);
  return response;
});

// Making a POST request
instance.post('/user', {
  firstName: 'Fred',
  lastName: 'Flintstone'
})
  .then(response => {
    console.log('User created:', response.data);
  })
  .catch(error => {
    console.error('Error creating user:', error);
  });

濫用範例

  1. 忽略錯誤處理:不正確處理錯誤可能會導致應用程式崩潰。
axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data);
  });
// Error handling should not be omitted
  1. 使用同步請求阻止代碼:Axios 不支援同步請求,以期望同步行為的方式使用它是不正確的。

方法

實例方法

  • axios(配置)
  • axios(url[, 設定])

請求方法

  • axios.request(配置)
  • axios.get(url[, 設定])
  • axios.delete(url[, 配置])
  • axios.head(url[, 配置])
  • axios.options(url[, 設定])
  • axios.post(url[, 資料[, 設定]])
  • axios.put(url[, 資料[, 設定]])
  • axios.patch(url[, 資料[, 設定]])

便捷方法

  • axios.all(可迭代)
  • axios.spread(回呼)

建立實例

  • axios.create([配置])

攔截器

  • axios.interceptors.request.use(onFulfilled[, onRejected[, options]])
  • axios.interceptors.response.use(onFulfilled[, onRejected[, options]])

配置預設值

  • axios.defaults

取消

  • axios.取消
  • axios.CancelToken
  • axios.isCancel

結論

Axios 是一個強大、易於使用的程式庫,用於在 JavaScript 應用程式中發出 HTTP 請求。它提供了強大的 API,具有請求和回應攔截、自動 JSON 轉換和基於 Promise 的架構等功能。然而,必須了解其限制並正確使用它以避免潛在的陷阱。

版本聲明 本文轉載於:https://dev.to/l_thomas_7c618d0460a87887/axios-ndn?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,輸出...
    程式設計 發佈於2025-04-25
  • 如何在php中使用捲髮發送原始帖子請求?
    如何在php中使用捲髮發送原始帖子請求?
    如何使用php 創建請求來發送原始帖子請求,開始使用curl_init()開始初始化curl session。然後,配置以下選項: curlopt_url:請求 [要發送的原始數據指定內容類型,為原始的帖子請求指定身體的內容類型很重要。在這種情況下,它是文本/平原。要執行此操作,請使用包含以下標頭...
    程式設計 發佈於2025-04-25
  • 如何使用Python有效地以相反順序讀取大型文件?
    如何使用Python有效地以相反順序讀取大型文件?
    在python 中,如果您使用一個大文件,並且需要從最後一行讀取其內容,則在第一行到第一行,Python的內置功能可能不合適。這是解決此任務的有效解決方案:反向行讀取器生成器 == ord('\ n'): 緩衝區=緩衝區[:-1] ...
    程式設計 發佈於2025-04-25
  • CSS強類型語言解析
    CSS強類型語言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    程式設計 發佈於2025-04-25
  • 為什麼HTML無法打印頁碼及解決方案
    為什麼HTML無法打印頁碼及解決方案
    無法在html頁面上打印頁碼? @page規則在@Media內部和外部都無濟於事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: ...
    程式設計 發佈於2025-04-25
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-04-25
  • Java中Lambda表達式為何需要“final”或“有效final”變量?
    Java中Lambda表達式為何需要“final”或“有效final”變量?
    Lambda Expressions Require "Final" or "Effectively Final" VariablesThe error message "Variable used in lambda expression shou...
    程式設計 發佈於2025-04-25
  • 如何使用Regex在PHP中有效地提取括號內的文本
    如何使用Regex在PHP中有效地提取括號內的文本
    php:在括號內提取文本在處理括號內的文本時,找到最有效的解決方案是必不可少的。一種方法是利用PHP的字符串操作函數,如下所示: 作為替代 $ text ='忽略除此之外的一切(text)'; preg_match('#((。 &&& [Regex使用模式來搜索特...
    程式設計 發佈於2025-04-25
  • Java字符串非空且非null的有效檢查方法
    Java字符串非空且非null的有效檢查方法
    檢查字符串是否不是null而不是空的if (str != null && !str.isEmpty())Option 2: str.length() == 0For Java versions prior to 1.6, str.length() == 0 can be二手: if(str!= n...
    程式設計 發佈於2025-04-25
  • 如何在Chrome中居中選擇框文本?
    如何在Chrome中居中選擇框文本?
    選擇框的文本對齊:一個部分Chrome-only-lyly-ly-ly-lyly solution 您可能希望將文本集中在select框中,以獲取審美原因或提高可訪問性。但是,在CSS中的選擇元素中手動添加一個文本 - 對屬性可能無法正常工作。 初始嘗試 state)</option>...
    程式設計 發佈於2025-04-25
  • 如何實時捕獲和流媒體以進行聊天機器人命令執行?
    如何實時捕獲和流媒體以進行聊天機器人命令執行?
    在開發能夠執行命令的chatbots的領域中,實時從命令執行實時捕獲Stdout,一個常見的需求是能夠檢索和顯示標準輸出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    程式設計 發佈於2025-04-25
  • Java數組中元素位置查找技巧
    Java數組中元素位置查找技巧
    在Java數組中檢索元素的位置 利用Java的反射API將數組轉換為列表中,允許您使用indexof方法。 (primitives)(鏈接到Mishax的解決方案) 用於排序陣列的數組此方法此方法返回元素的索引,如果發現了元素的索引,或一個負值,指示應放置元素的插入點。
    程式設計 發佈於2025-04-25
  • 解決MySQL插入Emoji時出現的\\"字符串值錯誤\\"異常
    解決MySQL插入Emoji時出現的\\"字符串值錯誤\\"異常
    Resolving Incorrect String Value Exception When Inserting EmojiWhen attempting to insert a string containing emoji characters into a MySQL database us...
    程式設計 發佈於2025-04-25
  • 如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求和假用戶代理繞過網站塊?
    如何使用Python的請求模擬瀏覽器行為,以及偽造的用戶代理提供了一個用戶 - 代理標頭一個有效方法是提供有效的用戶式header,以提供有效的用戶 - 設置,該標題可以通過browser和Acterner Systems the equestersystermery和操作系統。通過模仿像Chro...
    程式設計 發佈於2025-04-25
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-04-25

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3