在node.js中如何使用axios
这篇文章主要介绍了node.js中axios使用心得总结,以及分析了中间遇到的错误,大家参考一下。
Axios是一个基于Promise的 HTTP 库,可以用在浏览器和node.js 中,因为尤大大的推荐,axios也变得越来越流行。最近项目中使用axios也遇到了一些问题,就借此机会总结一下,如有错误,还请不吝指正。
功能
浏览器端发起XMLHttpRequests请求
node层发起http请求
支持Promise API
拦截请求和响应
转换请求和响应数据
取消请求
自动转换JSON数据
客户端支持防御XSRF(跨站请求伪造)
兼容
使用
npm
npm install axios
bower
bower install axios
cdn
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
发起请求
GET
axios.get('/user?ID=123') .then( res => { console.info(res) }).catch( e => { if(e.response){ //请求已发出,服务器返回状态码不是2xx。 console.info(e.response.data) console.info(e.response.status) console.info(e.response.headers) }else if(e.request){ // 请求已发出,但没有收到响应 // e.request 在浏览器里是一个XMLHttpRequest实例, // 在node中是一个http.ClientRequest实例 console.info(e.request) }else{ //发送请求时异常,捕捉到错误 console.info('error',e.message) } console.info(e.config) }) // 等同以下写法 axios({ url: '/user', method: 'GET', params: { ID: 123 } }).then( res => { console.info(res) }).catch( e=> { console.info(e) })
POST
axios.post('/user', { firstName: 'Mike', lastName: 'Allen' }).then( res => { console.info(res) }).catch( e => { console.info(e) }) // 等同以下写法 axios({ url: '/user', method: 'POST', data: { firstName: 'Mike', lastName: 'Allen' } }).then( res => { console.info(res) }).catch( e => { console.info(e) })
注意事项
在使用GET方法传递参数时使用的是params,并且官方文档中介绍为:params are the URL parameters to be sent with the request. Must be a plain object or a URLSearchParams object。译为:params作为URL链接中的参数发送请求,且其必须是一个plain object或者是URLSearchParams object。plain object(纯对象)是指用JSON形式定义的普通对象或者new Object()创建的简单对象;而URLSearchParams object指的是一个可以由URLSearchParams接口定义的一些实用方法来处理 URL 的查询字符串的对象,也就是说params传参是以/user?ID=1&name=mike&sex=male形式传递的。
而在使用POST时对应的传参使用的是data,data是作为请求体发送的,同样使用这种形式的还有PUT,PATCH等请求方式。有一点需要注意的是,axios中POST的默认请求体类型为Content-Type:application/json(JSON规范流行),这也是最常见的请求体类型,也就是说使用的是序列化后的json格式字符串来传递参数,如:{ "name" : "mike", "sex" : "male" };同时,后台必须要以支持@RequestBody的形式接收参数,否则会出现前台传参正确,后台接收不到的情况。
如果想要设置类型为Content-Type:application/x-www-form-urlencoded(浏览器原生支持),axios提供了两种方式,如下:
浏览器端
const params = new URLSearchParams(); params.append('param1', 'value1'); params.append('param2', 'value2'); axios.post('/user', params);
不过,并不是所有浏览器都支持URLSearchParams,兼容性查询caniuse.com,但是这里有一个Polyfill (polyfill:用于实现浏览器并不支持的原生API的代码,可以模糊理解为补丁,同时要确保polyfill在全局环境中)。
或者,你也可以用qs这个库来格式化数据。默认情况下在安装完axios后就可以使用qs库。
const qs = require('qs'); axios.post('/user', qs.stringify({'name':'mike'}));
node层
在node环境中可以使用querystring。同样,也可以用qs来格式化数据。
const querystring = require('querystring'); axios.post('http://something.com/', querystring.stringify({'name':'mike'}));
补充
常见的请求体类型还有一种方式,即multipart/form-data(浏览器原生支持),也就是提交表单数据常用的一种格式。和x-www-form-urlencoded对比起来,后者则是数据被编码成以 '&' 分隔的键-值对, 同时以 '=' 分隔键和值。非字母或数字的字符会被Percent-encoding(URL encoding),这也就是为什么这种类型不支持二进制数据的原因 (应使用 multipart/form-data 代替)。
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
在vue+vuex+axios+echarts中如何实现中国地图
以上是在node.js中如何使用axios的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

在Vue应用中使用axios是十分常见的,axios是一种基于Promise的HTTP客户端,可以用于浏览器和Node.js。在开发过程中,有时会出现“Uncaught(inpromise)Error:Requestfailedwithstatuscode500”的错误提示,对于开发者来说,这个错误提示可能有些难以理解和解决。本文将会探讨这

最近,在使用Vue应用开发过程中,我遇到了一个常见的问题:“TypeError:Failedtofetch”错误提示。这个问题出现在使用axios进行HTTP请求时,后端服务器没有正确响应请求时发生。这种错误提示通常表明请求无法到达服务器,可能是由于网络原因或服务器未响应造成的。出现这个错误提示后,我们应该怎么办呢?以下是一些解决方法:检查网络连接由于

Vue中数据请求的选择:AxiosorFetch?在Vue开发中,处理数据请求是一个非常常见的任务。而选择使用哪种工具来进行数据请求,则是一个需要考虑的问题。在Vue中,最常见的两种工具是Axios和Fetch。本文将会比较这两种工具的优缺点,并给出一些示例代码来帮助你做出选择。Axios是一个基于Promise的HTTP客户端,可以在浏览器和Node.

在Vue应用中使用axios时出现“Error:NetworkError”怎么解决?在Vue应用的开发中,我们经常会使用到axios进行API的请求或数据的获取,但是有时我们会遇到axios请求出现“Error:NetworkError”的情况,这时我们该怎么办呢?首先,需要了解“Error:NetworkError”是什么意思,它通常表示网络连

高效利用Vue和Axios实现前端数据的批量处理在前端开发中,数据的处理是一个常见的任务。当我们需要处理大量数据时,如果没有有效的方法,处理数据将会变得十分繁琐和低效。Vue是一种优秀的前端框架,而Axios是一个流行的网络请求库,它们可以协同工作来实现前端数据的批量处理。本文将详细介绍如何高效利用Vue和Axios来进行数据的批量处理,并提供相关的代码示例

vue3+ts+axios+pinia实现无感刷新1.先在项目中下载aiXos和pinianpmipinia--savenpminstallaxios--save2.封装axios请求-----下载js-cookienpmiJS-cookie-s//引入aixosimporttype{AxiosRequestConfig,AxiosResponse}from"axios";importaxiosfrom'axios';import{ElMess

在Vue应用中使用axios时出现“Error:timeoutofxxxmsexceeded”怎么办?随着互联网的快速发展,前端技术也在不断地更新迭代,Vue作为一种优秀的前端框架,近年来受到大家的欢迎。在Vue应用中,我们常常需要使用axios来进行网络请求,但是有时候会出现“Error:timeoutofxxxmsexceeded”的错误

在Vue.js应用中,使用axios是非常常见的。Axios是一个强大的HTTP请求库,可以让你轻松发送异步HTTP请求。然而,在使用axios时,会遇到一些错误,其中之一就是“TypeError:bindisnotafunction”。这个错误通常是由于axios版本不兼容Vue.js的原因导致的。让我们来看一下这个错误的解决方法。首先,我们需要
