Axios是一個非常流行的JavaScript庫,可用於執行HTTP請求,該庫在Browser和Node.js平台中均可使用
Axios簡介
Axios是一個非常流行的JavaScript庫,您可以使用它來執行HTTP請求,該庫在瀏覽器和Node.js平台。
它支持所有現代瀏覽器,包括對IE8和更高版本的支持。
它基於承諾,這使我們可以編寫異步/等待代碼來執行XHR要求非常容易。
與本機相比,使用Axios具有許多優勢提取API:
- 支持較舊的瀏覽器(獲取需要使用polyfill)
- 有一種方法可以中止請求
- 有辦法設置響應超時
- 內置CSRF保護
- 支持上傳進度
- 自動執行JSON格式數據轉換
- 在Node.js中工作
影片教學
觀看此視頻,在該視頻中我創建一個提供POST端點的Express服務器,並向其發出Axios請求以發布數據:
安裝
可以使用以下方法將Axios安裝為可在Node.js中使用:npm:
npm install axios
在瀏覽器中,可以使用unpkg.com將其包含在頁面中:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
記住必須啟用API調用CORS可以在瀏覽器中訪問,否則請求將失敗。
Axios API
您可以從發起HTTP請求axios
目的:
axios({
url: 'https://dog.ceo/api/breeds/list/all',
method: 'get'
})
這返回一個承諾。您可以使用async / await來解決對響應對象的承諾:
;(async () => {
const response = await axios({
url: 'https://dog.ceo/api/breeds/list/all',
method: 'get'
})
console.log(response)
})()
為了方便起見,您通常會使用以下方法
axios.get()
axios.post()
對於舊版本,例如在jQuery中,您將使用
$.get()
和$.post()
代替$.ajax()
它們提供了更簡單的語法。例如:
;(async () => {
const response = await axios.get('https://dog.ceo/api/breeds/list/all')
console.log(response)
})()
Axios提供了用於所有HTTP動詞的方法,這些方法不太流行,但仍在使用:
axios.delete()
axios.put()
axios.patch()
axios.options()
以及獲取請求的HTTP標頭,丟棄正文的方法,axios.head()
。
GET請求
此Node.js示例查詢狗API使用以下方法檢索所有犬種的列表axios.get()
,並且計算在內:
const axios = require('axios')
const getBreeds = async () => {
try {
return await axios.get(‘https://dog.ceo/api/breeds/list/all’)
} catch (error) {
console.error(error)
}
}
const countBreeds = async () => {
const breeds = await getBreeds()
if (breeds.data.message) {
console.log(Got </span><span style="color:#e6db74">${</span>Object.<span style="color:#a6e22e">entries</span>(<span style="color:#a6e22e">breeds</span>.<span style="color:#a6e22e">data</span>.<span style="color:#a6e22e">message</span>).<span style="color:#a6e22e">length</span><span style="color:#e6db74">}</span><span style="color:#e6db74"> breeds
)
}
}
countBreeds()
如果您不想使用異步/等待,則可以使用承諾句法:
const axios = require('axios')
const getBreeds = () => {
try {
return axios.get(‘https://dog.ceo/api/breeds/list/all’)
} catch (error) {
console.error(error)
}
}
const countBreeds = async () => {
const breeds = getBreeds()
.then(response => {
if (response.data.message) {
console.log(
Got </span><span style="color:#e6db74">${</span>Object.<span style="color:#a6e22e">entries</span>(<span style="color:#a6e22e">response</span>.<span style="color:#a6e22e">data</span>.<span style="color:#a6e22e">message</span>).<span style="color:#a6e22e">length</span><span style="color:#e6db74">}</span><span style="color:#e6db74"> breeds
)
}
})
.catch(error => {
console.log(error)
})
}
countBreeds()
向GET請求添加參數
GET響應可以在URL中包含參數,如下所示:https://site.com/?name=Flavio
。
使用Axios,您可以使用以下URL來執行此操作:
axios.get('https://site.com/?name=Flavio')
或者您可以使用params
選項中的屬性:
axios.get('https://site.com/', {
params: {
name: 'Flavio'
}
})
POST請求
執行POST請求就像執行GET請求一樣,但不是axios.get
, 你用axios.post
:
axios.post('https://site.com/')
包含POST參數的對像是第二個參數:
axios.post('https://site.com/', {
name: 'Flavio'
})
免費下載我的Node.js手冊
更多節點教程:
- npm軟件包管理器簡介
- Node.js簡介
- 使用Axios的HTTP請求
- 在何處託管Node.js應用
- 使用Node.js與Google Analytics(分析)API進行交互
- npx節點包運行器
- package.json指南
- npm在哪里安裝軟件包?
- 如何更新Node.js
- 如何使用或執行使用npm安裝的軟件包
- package-lock.json文件
- 使用npm的語義版本控制
- 您是否應該將node_modules文件夾提交到Git?
- 將所有Node依賴項更新到最新版本
- 使用Node.js解析JSON
- 查找npm軟件包的安裝版本
- Node.js流
- 安裝較舊版本的npm軟件包
- 在Node中獲取當前文件夾
- 如何在Node中記錄對象
- 使用導出從Node文件公開功能
- 節點和瀏覽器之間的區別
- 使用Node發出HTTP POST請求
- 使用Node獲取HTTP請求主體數據
- 節點緩衝區
- Node.js的簡要歷史
- 如何安裝Node.js
- 使用Node您需要知道多少JavaScript?
- 如何使用Node.js REPL
- 節點,從命令行接受參數
- 使用Node輸出到命令行
- 接受來自Node中命令行的輸入
- 使用`npm uninstall`來卸載npm軟件包。
- npm全局或本地軟件包
- npm依賴項和devDependencies
- Node.js事件循環
- 了解process.nextTick()
- 了解setImmediate()
- 節點事件發射器
- 建立一個HTTP服務器
- 使用Node發出HTTP請求
- Node fs模塊
- 使用Axios的Node中的HTTP請求
- 使用Node讀取文件
- 節點文件路徑
- 用Node寫入文件
- 節點文件統計
- 在Node中使用文件描述符
- 在Node中使用文件夾
- 節點路徑模塊
- Node http模塊
- 將WebSockets與Node.js結合使用
- 使用MySQL和Node的基礎知識
- Node.js中的錯誤處理
- 哈巴狗指南
- 如何從Node.js讀取環境變量
- 如何從Node.js程序退出
- Node os模塊
- 節點事件模塊
- 節點,開發與生產之間的區別
- 如何檢查Node.js中是否存在文件
- 如何在Node.js中創建一個空文件
- 如何使用Node.js刪除文件
- 如何使用Node.js獲取文件的最後更新日期
- 如何在JavaScript中確定日期是否為今天
- 如何將JSON對象寫入Node.js中的文件
- 為什麼要在下一個項目中使用Node.js?
- 從任何文件夾運行Web服務器
- 如何將MongoDB與Node.js結合使用
- 使用Chrome DevTools調試Node.js應用
- 什麼是pnpm?
- Node.js運行時v8選項列表
- 使用npm時如何解決“缺少寫訪問權限”錯誤
- 如何在Node.js中啟用ES模塊
- 如何使用Node.js生成子進程
- 如何在Express中同時獲取已解析的正文和原始正文
- 如何在Node.js中處理文件上傳
- 節點模塊中的對等依賴性是什麼?
- 如何使用Node.js編寫CSV文件
- 如何使用Node.js讀取CSV文件
- 節點核心模塊
- 使用Node.js一次增加多個文件夾的數量
- 如何將畫布打印到數據URL
- 如何使用Node.js和Canvas創建和保存圖像
- 如何使用Node.js下載圖像
- 如何在Node.js中批量重命名文件
- 如何獲取Node中文件夾中所有文件的名稱
- 如何使用Promise和基於Node.js回調的等待功能
- 如何在本地測試NPM軟件包
- 如何在運行時檢查當前的Node.js版本
- 如何使用Sequelize與PostgreSQL交互
- 使用Node.js服務HTML頁面
- 如何解決Node.js中的util.pump不是函數錯誤