fecth

news2024/11/29 8:01:56

reducx巩固知识的传送门


1.向服务器发送数据请求的方案:

第一类:XMLHttpRequest
1.ajax:自己编写请求的逻辑和步骤
2.axios:第三方库,对XMLHttpRequest进行封装「基于promise进行封装」

第二类:
fetchES6内置的API,本身即使基于promise,用全新的方案实现客户端和服务器端的数据请求
缺点:
1.不兼容IE
2.机制的完善度上,还是不如XNLHttpRequest的「例如︰无法设置超时时间、没有内置的请求中断的处理…

第三类:其它方案,主要是跨域为主
1.jsonp
2.postMessage
3.利用img的src发送请求,实现数据埋点和上报!!


2.语法

let promise实例(p) = fetch(请求地址,配置项);

1.当请求成功,p的状态是fulfilled,值是请求回来的内容;如果请求失败,p的状态是rejected,值是失败原因!+fetch和axios有一个不一样的地方:
2.在fetch中,只要服务器有反馈信息(不论HTTP状态码是多少),都说明网络请求成功,最后的实例p都是fulfilled,只有服务器没有任何反馈(例如︰请求中断、请求超时、断网等),实例p才是rejected!
3.在axios中,只有返回的状态码是以2开始的,才会让实例是成功态!


3.使用

let p = fetch( ' / api/getTaskList2 ' );
p.then( response => {
console.log ( '成功: ', response);})
.catch( reason => {
console.log( '失败: ', reason) ;});

4.配置项

method 请求的方式:默认是GET。GET、HEAD、DELETE、OPTIONS;POST、PUT、PATCH;

cache缓存模式:default,no-cache,reload,force-cache,only-if-cached+ credentials

资源凭证(例如cookie) include,same-origin,omit

fetch默认情况下,跨域请求中,是不允许携带资源凭证的,只有同源下才允许! !

include:同源和跨域下都可以

same-origin:只有同源才可以omit:都不可以

headers:普通对象{}/Headers实例自定义请求头信息

body:设置请求主体信息,只适用于POST系列请求,在GET系列请求中设置body会报错{让返回的实例变为失败态}

body内容

5.我们发现,相比较于axios来讲, fetch没有对GET系列请求,问号传参的信息做特殊的处理(axios中基于params设置问号参数信息),需要自己手动拼接到URL的末尾才可以!!

在使用axios进行网络请求时,可以使用params参数来设置GET请求问号参数,这些参数会被自动拼接到URL的末尾。例如,以下代码通过设置params参数来实现GET请求采用问号参数的方式:

axios.get('/api/users', {
  params: {
    userId: 123
  }
})

生成的请求URL为/api/users?userId=123

而在使用fetch进行网络请求时,需要手动将请求参数拼接到URL的末尾,例如:

fetch('/api/users?userId=123')

需要注意的是,在手动拼接URL时,要注意对参数进行URL编码,特别是对特殊字符进行处理,否则会导致请求失败或者无法得到预期的结果。

总的来说,axios比fetch在处理GET请求问号参数方面更方便一些,而fetch则更适合处理复杂的请求场景,例如处理CORS请求,上传文件等。


Headers类

Headers类:头处理类「请求头或者响应头」Headers.prototype

  • append新增头信息
  • +delete删除头信息
  • forEach迭代获取所有头信息
  • get获取某一项的信息
  • has验证是否包含某一项

在这里插入图片描述


服务器返回的response对象:Response类的实例

私有属性:
1.body响应主体信息:它是一个ReadableStream可读流
2.headers 响应头信息,它是Headers类的实例
3.status/ statusText返回的HTTP状态码及描述

Response.prototype
1.arrayBuffer
2.blob
3.formData
4.json
5.text

这些方法就是用来处理body可读流信息的,把可读流信息转换为我们自己需要的格式!!
返回值是一个promise实例,这样可以避免,服务器返回的信息在转换中出现问题(例如︰服务器返回的是一个流信息,我们转换为json对象肯定是不对的,此时可以让其返回失败的实例即可)

post请求例子(新增):
在这里插入图片描述

获取

在这里插入图片描述


问题

axios中我们设置一个普通对象,axios内部会把其变为json字符串传递给服务器,并且自己是请求头中的Content-Type,但是fetch中没有帮我们封装需要自己实现.

在axios中,我们可以通过设置data参数来传递一个普通对象,并且axios会自动将其序列化为JSON字符串并添加到请求体中,同时在请求头中设置Content-Typeapplication/json

例如,以下代码可以使用axios进行POST请求并传递一个普通JS对象:

axios.post('/api/users', {
  name: 'Tom',
  age: 18
})

而在fetch中,没有默认的行为将一个普通对象转换为JSON字符串并设置Content-Type,需要我们手动设置请求头和请求体内容。例如:

fetch('/api/users', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Tom',
    age: 18
  })
})

在这里需要注意,使用fetch进行POST请求时,需要手动设置请求方法为POST,并且显式地设置请求头为JSON;同时,需要手动将请求体数据转换为JSON字符串格式,并且设置到请求选项的body属性中。

总体来说,axios比fetch对于普通对象的处理更加自动化一些,而使用fetch则需要手动设置请求头和请求正文内容。


fetch中的请求中断

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/664060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文了解NAS协议原理

一文了解NAS协议原理 一、介绍二、NAS协议结构三、NAS协议工作原理四、NAS协议的安全机制4.1、NAS协议的认证过程4.2、NAS协议的加密过程 五、总结 一、介绍 NAS协议(Network Attached Storage Protocol)是一种用于网络附加存储设备(NAS&…

学习HCIP的day.16

目录 扩展知识点 一、端口镜像 SPAN 二、DHCP 三、DHCP snooping 四、端口安全 五、SSH 六、端口隔离 扩展知识点 一、端口镜像 SPAN [r1]observe-port interface GigabitEthernet 0/0/2 监控接口[r1]interface GigabitEthernet 0/0/0[r1-GigabitEthernet0/…

浅谈单元测试的那些事

Part 01 什么是单元测试 单元测试是一种软件测试方法,用于测试软件系统的最小可测试单元,例如函数、方法或类的行为。单元测试通常由开发人员编写,并在编写代码时就开始执行。这样可以保证实时检测代码中的错误、缺陷和潜在的问题&#xff0…

打包Java程序为.exe文件

文章目录 将Java程序打包成Jar包打包为.exe文件效果展示文件检索联系作者 ​👑作者主页:Java冰激凌 接上篇 我们还未介绍到如何打包为一个.exe文件 将Java程序打包成Jar包 1. file -> Project Structure 或者直接使用全局快捷键(Ctrl Al…

Java调用ChatGPT实现可连续对话和流式输出

目录 1. 配置阶段1.1 依赖引入1.2 配置application.yml文件1.3 注解添加 2. 使用2.1 生成回答2.1.1 测试 2.2 生成图片2.2.1 测试 2.3 下载图片2.3.1 测试 2.4 生成流式回答2.4.1 流式回答输出到IDEA控制台2.4.2 流式回答输出到浏览器页面2.4.3 流式回答结合Vue输出到前端界面 …

Docker: 改变容器化世界的革命性技术

目录 1.1什么是虚拟化 1.2什么是Docker 1.3容器与虚拟机的比较 1.4Docker组建 2、Docker安装 2.2设置ustc的镜像 2.3Docker的启动与停止 3、docker常用命令 3.1镜像 3.2容器相关命令 1.1什么是虚拟化 在计算机中,虚拟化(Vitualization&#x…

这可能是最全的Web测试各个测试点,有这一篇就够了

前言 什么是Web测试? Web测试测试Web或Web应用程序的潜在错误。它是在上线前对基于网络的应用程序进行完整的测试。 Web测试检查 功能测试 易用性测试 接口测试 性能测试 安全测试 兼容性测试 1、功能测试 测试网页中的所有链接、数据库连接、网页中用于提交或从…

结合具体代码理解yolov5-7.0锚框(anchor)生成机制

最近对yolov5-7.0的学习有所深入,感觉官方代码也比较易读,所以对网络结构的理解更进一步,其中对锚框生成这块没太看明白细节,也想弄明白这块,于是前前后后好好看了代码。现在把我的学习收获做一下记录。个人见解&#…

如何在大规模服务中迁移缓存

当您启动初始服务时,通常会过度设计以考虑大量流量。但是,当您的服务达到爆炸式增长阶段,或者如果您的服务请求和处理大量流量时,您将需要重新考虑您的架构以适应它。糟糕的系统设计导致难以扩展或无法满足处理大量流量的需求&…

第三章 decimal模块

1. decimal 模块介绍 decimal 模块是 Python 提供的用于进行十进制定点和浮点运算的内置模块。使用它可以快速正确地进行十进制定点和浮点数的舍入运算,并且可以控制有效数字的个数。 使用 decimal 模块主要是因为它与 Python 自带的浮点数相比,有以下…

关于Stream流和Lambda表达式,这些技巧你都知道吗?

💧 关于 S t r e a m 流和 L a m b d a 表达式,这些技巧你都知道吗? \color{#FF1493}{关于Stream流和Lambda表达式,这些技巧你都知道吗?} 关于Stream流和Lambda表达式,这些技巧你都知道吗?&…

2014年全国硕士研究生入学统一考试管理类专业学位联考写作试题

2014年1月真题: 四、写作:第56~57小题,共65分。其中论证有效性分析30 分,论说文35分。 56.论证有效性分析: 分析下述论证中存在的缺陷和漏洞,选择若干要点,写一篇600字左右的文章,对该论证的有效性进行分析和评论。…

马克思第二章

1.实践和认识 实践决定认识,认识又反作用于实践 实践的特点: 1.直接现实性 2.自觉能动性 3.社会历史性 实践和认识的关系 1.实践是认识的来源 2.实践是认识的目的 3.实践是认识的发展动力 4.实践是检验认识真理的唯一标准 5.认识又反作用于实践&#xf…

gocv Windows10下编译和安装(opencv4.7)

opencv居然还没有官方的golang版,出乎意料。为了编译安装这玩意,折腾了一下午,记录下: 资源提前下载 1、 MinGW-w64 这里的坑是对于只懂一点点的人,容易选错版本: 没仔细看的人很可能会选win32的&#x…

【EDA软件互转】PADS转Allegro

1. 使用pads软件打开PCB文件,然后执行菜单命令:File->Export->弹出的对话框中点击“保存”。然后按下图设置后点击“OK”按钮,会在当前目录下生成一个前面保存的asc文件;如果点击OK后有弹出其它提示就点击“确定”就好…

在编写测试报告的时候,我们有哪些点需要注意的呢?

测试报告作为测试人员的核心输出项,是体现自己工作价值的重要承载工具,需要我们认真对待,所以我们要重视测试报告的输出,那么在编写测试报告的时候,我们有哪些点需要注意的呢? 1、不要乱用模板 很多测试新…

CTR预估之WideDeep系列(下):NFM/xDeepFM

在上一篇文章中CTR预估之Wide&Deep系列模型:DeepFM/DCN,学习了Wide & Deep这种通用框架:wide组件的线性模型的显性低阶特征交叉提供记忆能力,deep组件的深度网络模型的隐式高阶特征交叉提供泛化能力,还有DeepFM和Deep&…

蓝桥杯刷题篇①

前言:hello各位童学们好呀!许久不见!本文为本人的蓝桥杯OJ的刷题笔记!文章隶属于专栏蓝桥杯,该专栏的目的是为了记录自己的刷题记录和学习过程,激励自己不断前行,为明年的ACM、ICPC、蓝桥杯等比…

CVPR2023最佳论文提名(12篇)

CVPR2023公布了12篇最佳论文候选文章。(直接点击标题可以查看原文~) Ego-Body Pose Estimation via Ego-Head Pose Estimation 单位:Stanford-----------关键词:姿态估计 3D Registration With Maximal Cliques 单位&…

三层交换机与路由互联配置(华为设备)

#三层交换机与路由器配置配置 #三层交换机与路由器配置配置 路由器配置 #进入系统视图 <Huawei>system-view #关闭系统提示信息 [Huawei]undo info-center enable #配置一个环回口 [Huawei]int LoopBack 0 #配置IP地址 与 掩码 [Huawei-LoopBack0]ip address 1.1.…