JavaScript 中 Axios 和 Fetch 的区别

javascript 中 axios 和 fetch 的区别

在 javascript 中,axios 和原生的 fetch api 都用于发出 http 请求,但它们在特性、易用性和功能方面存在一些差异。详细介绍如下:

1. 易于使用:

axios:

axios 简化了发出请求和处理响应。它自动解析 json 响应,使其更易于使用。

 axios.get('/api/user')   .then(response => console.log(response.data))   .catch(error => console.error(error));

获取:

使用 fetch 时,需要显式处理 json 解析,这增加了一个额外的步骤。

 fetch('/api/user')   .then(response => response.json())   .then(data => console.log(data))   .catch(error => console.error(error));

2. 响应处理:

axios: 如果响应状态超出 2xx 范围,axios 会自动解析响应并抛出错误,因此您可以直接在 .catch() 块中处理错误。

获取:

对于 fetch,非 2xx 状态代码(如 404 或 500)不会被视为错误。您必须手动检查响应状态并在需要时抛出错误。

 fetch('/api/user')   .then(response => {     if (!response.ok) throw new error('network response was not ok');     return response.json();   })   .then(data => console.log(data))   .catch(error => console.error(error));

3. 请求和响应拦截:

axios:

axios 提供内置拦截器,允许您全局修改请求或处理响应,这对于添加身份验证令牌、日志记录等非常有用

 axios.interceptors.request.use(config => {   config.headers['authorization'] = 'bearer token';   return config; });

获取:

fetch 没有内置拦截器,因此如果需要此行为,您需要手动将 fetch 调用包装在自定义函数中。

4. 浏览器兼容性:

axios: axios 适用于较旧的浏览器(ie 11 及更早版本)并在内部处理 polyfill。获取: internet explorer 不支持 fetch api。您可能需要像whatwg-fetch这样的polyfill来在旧版浏览器中支持它。

5. 数据处理:

axios:

axios 在发出 post 请求时自动对数据进行字符串化,并将 content-type 设置为 application/json。它还支持轻松发送 formdata 等其他格式的数据。

 axios.post('/api/user', { name: 'john' });

获取:

在 fetch 中,您需要手动对数据进行字符串化并设置 post 请求的标头。

 fetch('/api/user', {   method: 'post',   headers: { 'content-type': 'application/json' },   body: json.stringify({ name: 'john' }) });

6. 取消请求:

axios:

axios 内置支持使用 canceltoken 取消请求。

 const source = axios.canceltoken.source(); axios.get('/api/user', { canceltoken: source.token }); source.cancel('request canceled.');

获取:

使用 fetch 时,您需要使用 abortcontroller 来取消请求,这可能会更复杂一些。

 const controller = new AbortController(); fetch('/api/user', { signal: controller.signal }); controller.abort();

7. 错误处理:

axios: axios 对于非 2xx 响应自动抛出错误,错误处理更加一致和集中。获取: fetch 需要更多的手动错误处理,因为它只会拒绝网络错误的承诺,而不会拒绝 http 错误状态代码。

结论:

axios 功能更加丰富,易于使用,并为处理请求提供了更好的抽象。fetch 是一种现代的原生 api,需要较少的依​​赖项,但需要更多的手动工作来处理某些功能,如错误、拦截器和数据处理。

如果您希望更好地控制您的请求,您可能会坚持使用 fetch。如果您想要简化 http 请求的东西,axios 将是更好的选择。

以上就是JavaScript 中 Axios 和 Fetch 的区别的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1491755.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
React Native 的故事书
上一篇 2025年12月19日 14:14:11
使用 nodeJS 从头开始​​创建 ReAct Agent(维基百科搜索)
下一篇 2025年12月19日 14:14:22

相关推荐

  • html中的table详解

    本篇文章主要介绍html中的table,感兴趣的朋友参考下,希望对大家有所帮助。 普通表格,简单的HTML表格由table元素以及tr、td和th元素组成,其中tr是指表格行,td是指单元格,th定义表头。空单元格就直接不填即可,或者用 。 表头表头表头单元格1单元格3 2.带有边框的表格。bord…

    用户投稿 2025年12月21日
    000
  • HTMl5的存储方式sessionStorage和localStorage详解

    这篇文章主要介绍了关于html5的存储方式sessionstorage和localstorage详解,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage。sessionStora…

    用户投稿 2025年12月21日
    000
  • HTML5实现简单图片上传所遇到的问题及解决办法

    HTML5实现简单图片上传所遇到的问题及解决办法HTML5实现简单图片上传所遇到的问题及解决办法HTML5实现简单图片上传所遇到的问题及解决办法HTML5实现简单图片上传所遇到的问题及解决办法

    这篇文章主要介绍了html5实现简单图片上传所遇到的问题及解决办法 的相关资料,需要的朋友可以参考下 一、展示 因为前端上传文件是必须通过form表单的,不能使用ajax,这样的话一个移动页面放入一个type为file的input真心不怎么好看,如下图,很挫有没有 解决办法找了下,PC上有些是把这个…

    2025年12月21日 用户投稿
    000
  • HTML5 Video标签的属性、方法和事件汇总介绍

    这篇文章主要介绍了html5 video标签的属性、方法和事件汇总介绍,本文讲解了 前段时间写了一个基于html5 video的视频播放器,从起初的对其不了解,然后到能够写一个基本完善的自定义播放器。在这个过程中,对video标签的属性,方法,事件有了个全面的认识。下面分类列出来一下。 标签的属性 …

    用户投稿 2025年12月21日
    000
  • HTML5中的autofocus(自动聚焦)属性介绍

    这篇文章主要介绍了关于html5中的autofocus(自动聚焦)属性介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 HTML5给我们带来了一大堆神奇的东西。以前需要用JavaScript和Flash完成的任务,例如表单校验,INPUT placeholders , 客户端重命名…

    用户投稿 2025年12月21日
    000
  • 实现简易html视频播放器的方法

    这篇文章主要介绍了实现简易html视频播放器的方法,h5创建视频播放器很简单,您只需要添加一些h5的标签即可创建出炫酷的播放器 本文介绍了实现简易html视频播放器的方法,分享给大家,具体如下: 文件列表 root@tianshl:/data/video# lshch.mp4 test.mp4 xy…

    2025年12月21日
    000
  • html中的标签详解

    html标签是html语言中最基本的单位,html标签是html最重要的组成部分。网页的内容需在标签中,标题、字符格式、语言、兼容性、关键字、描述等信息显示在 标签中,而网页需展示的内容需嵌套在标签中。某些时候不按标准书写代码虽然可以正常显示,但还是应该养成正规编写习惯。 1.文档结构标签:主要用来…

    用户投稿 2025年12月21日
    000
  • 如何将html转化为图片

    在我们做h5页面或者推广小程序的时候,特别是在微信里,为了让用户更好的分享给朋友,往往需要将动态生成的html生成一个图片,然后让用户长按保存发给朋友或者朋友圈。 1,在html里新建canvas画布 /**要生成图片的html*/ 思路惊奇 思路惊奇 @@##@@ @@##@@/*生成的canva…

    用户投稿 2025年12月21日
    000
  • HTML5获取设备信息

    这篇文章主要介绍了关于HTML5获取设备信息,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Device模块管理设备信息,用于获取手机设备的相关信息,如IMEI、IMSI、型号、厂商等。通过plus.device获取设备信息管理对象。 1、属性 1.1、imei: 设备的国际移动设备…

    用户投稿 2025年12月21日
    000
  • html写网页如何布局

    html常用的布局有两种。第一种一是div布局,优点是比较方便简洁,代码比较少,制作和维护也比较容易,就是有些地方不同的浏览器兼容性不一样,可能会有不同的显示。第二种是table布局,代码比较多,到后期维护起来是非常头疼的,但是table布局规避了许多浏览器不兼容的问题。 1.div布局 body{…

    用户投稿 2025年12月21日
    000
  • 如何用html制作百度首页

    本篇文章适用与刚学html和css,练习一个比较简单的百度首页,因为百度的主页比较简单,大概分为三个部分:右上角的标签、logo和表单、下面的版权信息。对于刚开始想要检测学习成果是一个不错的好方法,熟练后再去尝试写一些复杂的html网页。 下面是html制作百度首页的源码 百度一下,你就知道搜索设置…

    用户投稿 2025年12月21日
    000
  • html中的有序列表和无序列表

    本篇文章主要介绍html中的有序与无序列表示如何编写的,对于刚开始学习的小伙伴还是非常有帮助的,感兴趣的朋友参考下。 有序列表代码如下: 数字显示 第一天 第二天 第三天 第四天 字母显示 第一天 第二天 第三天 第四天 小写罗马数字显示 第一天 第二天 第三天 第四天 大写罗马数字显示 第一天 第…

    2025年12月21日
    000
  • html当当网首页实例

    本篇文章主要描述如何使用html来写当当网首页的案例,有对此案例感兴趣的小伙伴来参考一下吧。 html代码如下: 当当网首页 关闭 @@##@@ @@##@@ 推荐分类 外语 | 中小学教辅 | @@##@@ 图书商品分类 [小说] 悬疑 | 言情 | 职场 | 财经 [文艺] 文学 | 传记 | …

    用户投稿 2025年12月21日
    000
  • html 空链接 href=”#”与href=”javascript:void(0)”的区别

    注意是跳动到了页首的区别,最好用void(0) 用户体验好点。 #包含了一个位置信息 默认的锚是#top 也就是网页的上端 而javascript:void(0) 仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#但跳动到了页首 而javascript:void(0) 则不是如此 所以…

    用户投稿 2025年12月21日
    000
  • html中用href 实现点击链接弹出文件下载对话框

    这篇文章主要介绍了关于html中用href 实现点击链接弹出文件下载对话框,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 用href 实现文件下载,之前不知道,今天有学会了一招实现点击链接弹出文件下载对话框,感兴趣的朋友可以了解下 今天又学了一招,以前不知道,就是做过的东西太少了………

    用户投稿 2025年12月21日
    000
  • Html Select 使用selected属性设置默认选择项

    这篇文章主要介绍了关于html select 使用selected属性设置默认选择项,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Html Select 如何进行默认选择,只要给某个option 添加 selected = selected”属性就是默认选项,下面是示例…

    用户投稿 2025年12月21日
    000
  • 使用HTML5捕捉音频与视频信息概述及实例

    这篇文章主要介绍了关于使用html5捕捉音频与视频信息概述及实例,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 音频与视频信息的捕捉一直是Web开发中的一个难点,下面为大家介绍一种新的API,该API通过使用navigatior.getUserMedia()方法来让Web应用程序拥有…

    用户投稿 2025年12月21日
    000
  • HTML几种特别分割线特效

    这篇文章主要介绍了关于html几种特别分割线特效 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 HTML分割线特效,挺实用与漂亮的分隔线,需要的朋友可以参考下。 一、基本线条 二、特效(效果并不是孤立的,可相互组合)1、两头渐变透明: 2、纺锤形: 3、右边渐变透明: 4、左边渐变…

    用户投稿 2025年12月21日
    000
  • html5调用摄像头功能的实现代码

    这篇文章主要介绍了关于html5调用摄像头功能的实现代码,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 前言 前些天,线上笔试的时候,发现需要浏览器同意开启摄像头,感觉像是 js 调用的,由于当时笔试,也就没想到这么多问题。今天闲来无事,看了下自己的 todo,发现有这个调用摄像头的…

    用户投稿 2025年12月21日
    000
  • HTML页面table滚动条的实现

    这篇文章主要介绍了关于HTML页面table滚动条的实现 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 table scrollbar & header fixed 有很多页面由于数据量过大,会产生横纵滚动条。为了便于使用者观看,我们要把表头固定一下。根据这个需求写了个de…

    用户投稿 2025年12月21日
    100

发表回复

登录后才能评论
关注微信