深入解析fetch API:定义、参数、返回值及应用实例

2024-08-26 05:04

本文主要是介绍深入解析fetch API:定义、参数、返回值及应用实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Web开发中,fetch API已成为处理HTTP请求的一种现代且强大的方式。作为XMLHttpRequest的升级版,fetch不仅简化了代码,还提供了更丰富的功能和更灵活的使用方式。本文将全面讲解fetch函数的定义、参数及返回值,帮助开发者更好地理解和应用这一API。

一、fetch函数定义

fetch函数是Web API的一部分,用于在JavaScript脚本中发起HTTP请求。其基本语法如下:

fetch(input[, init]).then(response => {// 处理响应}).catch(error => {// 处理错误});
  • input:定义要获取的资源。它可以是一个USVString(包含要获取资源的URL)或一个Request对象。
  • init(可选):一个配置项对象,包含所有对请求的设置,如请求方法、头信息、请求体等。

fetch函数返回一个Promise对象,该对象在请求成功时解析(resolve)为一个Response对象,在请求失败时拒绝(reject)一个错误。

二、fetch参数详解

1. input参数

input参数可以是字符串形式的URL或Request对象。当使用URL字符串时,fetch默认发起GET请求。使用Request对象时,可以更灵活地配置请求,包括请求方法、头信息、请求体等。

2. init参数

init参数是一个可选的配置项对象,支持以下属性:

  • method:请求使用的方法,如GET、POST、PUT、DELETE等。
  • headers:请求的头信息,形式为Headers对象或包含ByteString值的对象字面量。
  • body:请求的body信息,可能是一个BlobBufferSourceFormDataURLSearchParamsUSVString对象。注意,GET或HEAD方法的请求不能包含body信息。
  • mode:请求的模式,如corsno-corssame-origin
  • credentials:请求的credentials,如omitsame-origininclude
  • cache:请求的cache模式,如defaultno-storereloadno-cacheforce-cacheonly-if-cached
  • redirect:重定向模式,如follow(自动重定向)、error(如果产生重定向将自动终止并抛出错误)或manual(手动处理重定向)。
  • referrer:一个USVString,可以是no-referrerclient或一个URL。
  • referrerPolicy:指定referer HTTP头部的值。
  • integrity:请求的subresource integrity值。

三、fetch返回值

fetch函数返回一个Promise对象,该对象在请求成功时解析为一个Response对象。Response对象包含了一系列属性和方法,用于处理响应数据。

Response对象的主要属性和方法

  • status(number):HTTP请求结果的状态码,范围在100-599之间。

  • statusText(String):服务器返回的状态报告。

  • ok(boolean):如果状态码在200-299之间,表示请求成功,则为true。

  • headers(Headers):返回头部信息,可通过Headers对象的方法访问。

  • url(String):请求的URL。

  • text():返回一个解析为文本字符串的Promise对象。

  • json():返回一个解析为JSON对象的Promise对象。

  • blob():返回一个解析为Blob对象的Promise对象。

  • arrayBuffer():返回一个解析为ArrayBuffer对象的Promise对象。

  • formData():返回一个解析为FormData对象的Promise对象。

四、使用示例

GET请求示例

获取HTML类型数据:

fetch('/users.html').then(response => response.text()).then(body => {document.body.innerHTML = body;}).catch(error => console.error('Error:', error));

获取JSON类型数据:

fetch('/users.json').then(response => response.json()).then(json => console.log('parsed json', json)).catch(error => console.error('Error:', error));

POST请求示例

fetch('/login', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({username: 'example',password: '123456',}),
})
.then(response => response.json())
.then(data => console.log('Success:', data))
.catch((error) => console.error('Error:', error));

五、总结

fetch API提供了比XMLHttpRequest更简洁、更强大的HTTP请求处理能力。通过了解其定义、参数和返回值,开发者可以更加灵活地在Web应用中发起和处理HTTP请求。无论是GET请求还是POST请求,fetch都提供了一种简洁且高效的方式来获取和解析响应数据。希望本文能帮助你更好地理解和应用fetch API。

这篇关于深入解析fetch API:定义、参数、返回值及应用实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107616

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图