返回顶部
首页 > 资讯 > 前端开发 > node.js >node.js中axios使用心得总结
  • 432
分享到

node.js中axios使用心得总结

使用心得nodejs 2022-06-04 17:06:10 432人浏览 八月长安
摘要

AxiOS是一个基于Promise的 Http 库,可以用在浏览器和node.js 中,因为尤大大的推荐,axios也变得越来越流行。最近项目中使用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 代替)。

--结束END--

本文标题: node.js中axios使用心得总结

本文链接: https://lsjlt.com/news/13126.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • node.js中axios使用心得总结
    Axios是一个基于Promise的 HTTP 库,可以用在浏览器和node.js 中,因为尤大大的推荐,axios也变得越来越流行。最近项目中使用axios也遇到了一些问题,就借此机会总结一下,如有错误,...
    99+
    2022-06-04
    使用心得 node js
  • java实习心得总结(八篇)
        java实习心得总结(篇一)   此次只实训了短短的三周。虽说时间很短,但其中的每一天都使我收获很大、受益匪浅,它不但极大地加深了我对一些理论知识的理解,不仅使我在理论上对java有了全新的认识,在实践能力上也得到了提高,真正地做...
    99+
    2023-09-21
    java 开发语言
  • ReactRouter中Link和NavLink的学习心得总结
    目录React Router Link和NavLink的学习LinkNavLink总结React Router Link和NavLink的学习 Link 现在,我们应用需要在各个页面...
    99+
    2022-12-08
    React Router中Link React Router中NavLink Link和NavLink学习
  • java guava主要功能介绍及使用心得总结
    目录1. 前言2. Guava主要功能介绍2.1 集合操作2.2 缓存2.3 字符串处理2.4 函数式编程2.5 其他实用工具3. 结论1. 前言 Guava是一个由Google开发...
    99+
    2023-05-16
    java guava使用 java guava
  • 【面试心得】C++ 线程池总结
    什么是线程池 线程池(Thread Pool)是一种多线程编程的设计模式,它用于管理和复用线程,以有效地执行并发任务。线程池由一组预创建的线程组成,这些线程在需要时被分配来执行任务。线程池的核心思想是将线程的创建、销毁和管理工作从任务执行中...
    99+
    2023-09-12
    c++
  • axios库的核心代码解析及总结
    目录一、关键步骤1.创建axios对象2.请求二、Axios类1.基础属性2.辅助方法3.request方法三、adpter适配器1.xhradpter2.httpadpter一、关...
    99+
    2024-04-02
  • 基于android startActivityForResult的学习心得总结
    从昨晚到现在终于调试通了一个startActivityForResult的例子,网上要么有些说的太复杂了,要么说的含糊,搞的我走了很多弯路,所以写篇心得。在一个主界面(主Act...
    99+
    2022-06-06
    学习心得 学习 Android
  • Vue2中使用axios的3种方法实例总结
    目录第一种 原始方法 直接在项目中使用(不建议使用)第二种 将请求挂载到全局( 推荐使用 )第三种 将代码进行封装总结第一种 原始方法 直接在项目中使用(不建议使用) 这种方法最简单...
    99+
    2024-04-02
  • node.js中的console用法总结
    //建立app.js页面 // 一:页面代码 console.log("log信息"); //在页面中执行(node app.js)这个文件会在控制台中看到log信息:"log信息" //换个方式...
    99+
    2022-06-04
    node js console
  • 详解axios在node.js中的post使用
    前言: 最近因为做的东西需要用到网络请求库,之前接触过的只有request,很强大好用。但是这个项目中需要用到Promise,我又不想重新封装,于是选择了另一款库axios。 在node中,axios的g...
    99+
    2022-06-04
    详解 axios node
  • GNS3的使用心得
          记得最先使用模拟器的时候用的是简单的小模拟器,很多实验都做不了。只能简单的在各种模式间切换有很多命令无法支持,基本没法做实验也就一直是学习理论一直没有机会实践,很多命令看了但记不住。       直到后来接触了一个很不...
    99+
    2023-01-31
    使用心得
  • Axios中值得学习的核心知识点有哪些
    本篇内容介绍了“Axios中值得学习的核心知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、A...
    99+
    2024-04-02
  • vue3 学习笔记之axios的使用变化总结
    目录一、axio 得基本使用 二、如何解决跨域问题? 三、封装 四、全局引用 axios 使用 axios 之前,需要先安装好。 yarn add axios npm ins...
    99+
    2024-04-02
  • 分享Android中pullToRefresh的使用心得
    pullToRefresh的导入 首先,点击new按钮 -> import Module   然后在 New Module界面选择已经在本地的含有源代码的p...
    99+
    2022-06-06
    pulltorefresh Android
  • Mybatis中isNotNull与isNotEmpty的使用心得
    目录isNotNull与isNotEmpty使用心得具体业务需求是这样的看一下下面2个SQL语句isNull, isNotNull与isEmpty, isNotEmpty区别例子is...
    99+
    2024-04-02
  • 使用node.js半年来总结的 10 条经验
    先不说房价,堵车,雾霾。。。先说说我这半年使用 Node.js 的经验吧。。。都是工作上遇到的问题,血的教训。。 1.精确版本号 “一定要精确到具体版本号!使用*直接滚,^和~都不行!”,早上刚到公司,我们...
    99+
    2022-06-04
    半年 经验 node
  • CSS开发心得:解决常见问题的项目经验总结
    CSS(层叠样式表)作为前端开发中不可或缺的一部分,负责页面的样式设计与布局。在项目开发过程中,我们常常会碰到一些常见的CSS问题,解决这些问题是提高项目开发效率和质量的重要环节。本文将总结一些解决常见CSS问题的项目经验,希望能为开发者们...
    99+
    2023-11-03
    响应式设计 样式优化 CSS布局
  • Spring中Transactional注解使用的心得(推荐)
    事务特性 @Transactional注解是用于事务控制的,需要知道事务的ACID特征:即原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Is...
    99+
    2022-11-13
    Spring Transactional注解 Spring Transactional使用
  • 关于Python数据结构中字典的心得
    本篇主要介绍:常见的字典方法、如何处理查不到的键、标准库中 dict 类型的变种、散列表的工作原理等。一下是全部内容: 泛映射类型 collections.abc 模块中有 Mapping 和 Mutabl...
    99+
    2022-06-04
    数据结构 字典 心得
  • Node.js中Express框架怎么使用axios同步请求
    这篇文章主要介绍了Node.js中Express框架怎么使用axios同步请求的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node.js中Express框架怎么使用axios同步请求文章都会有所收获,下面我们...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作