Axios是一个非常方便的JavaScript库,用于在Node.js中执行HTTP请求
介绍
Axios是一个非常流行的JavaScript库,您可以使用它来执行HTTP请求,该库在浏览器和Node.js平台。
它支持所有现代浏览器,包括对IE8和更高版本的支持。
它基于承诺,这使我们可以编写异步/等待代码来执行XHR要求非常容易。
与本机相比,使用Axios具有许多优势提取API:
- 支持较旧的浏览器(获取需要使用polyfill)
- 有一种方法可以中止请求
- 有办法设置响应超时
- 内置CSRF保护
- 支持上传进度
- 执行自动JSON数据转换
- 在Node.js中工作
影片教学
观看此视频,在该视频中我创建一个提供POST端点的Express服务器,并向其发出Axios请求以发布数据:
安装
可以使用以下方式安装Axiosnpm:
npm install axios
或者纱:
yarn add axios
或使用unpkg.com将其包含在您的页面中:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
Axios API
您可以从发起HTTP请求axios
目的:
我用
foo
和bar
作为随机名称。输入任何名称以替换它们。
axios({
url: 'https://dog.ceo/api/breeds/list/all',
method: 'get',
data: {
foo: 'bar'
}
})
但是为了方便起见,您通常会使用
axios.get()
axios.post()
(就像在jQuery中,您将使用$.get()
和$.post()
代替$.ajax()
)
Axios提供了用于所有HTTP动词的方法,这些方法不太流行,但仍在使用:
axios.delete()
axios.put()
axios.patch()
axios.options()
以及获取请求的HTTP标头的方法,该方法将忽略正文:
axios.head()
GET请求
使用Axios的一种便捷方法是使用现代(ES2017)异步/等待语法。
此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/?foo=bar
。
使用Axios,您可以使用以下URL来执行此操作:
axios.get('https://site.com/?foo=bar')
或者您可以使用params
选项中的属性:
axios.get('https://site.com/', {
params: {
foo: 'bar'
}
})
POST请求
执行POST请求就像执行GET请求一样,但不是axios.get
, 你用axios.post
:
axios.post('https://site.com/')
包含POST参数的对象是第二个参数:
axios.post('https://site.com/', {
foo: 'bar'
})
免费下载我的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不是函数错误