当前位置: 首页 > article >正文

【JavaScript fetch API】简介和使用

fetch 是一个现代的 JavaScript API,用于获取资源,例如从网络服务器获取数据。它提供了一种比传统的 XMLHttpRequest 更简洁、更易于使用的机制来进行网络请求。 fetch 基于 Promise,这使得异步操作更容易处理。

核心概念:

  • fetch(url, [options]): 这是 fetch API 的核心函数。它接受一个 URL
    作为第一个参数,可选地接受一个包含请求配置的 options 对象作为第二个参数。 fetch() 返回一个
    Promise,该 Promise 解析为一个 Response 对象。
  • Response 对象: Response 对象表示服务器对请求的响应。它包含了响应的状态码、头部信息以及响应体。 你可以通过
    Response 对象上的方法来访问这些信息。
  • Request 对象 (可选): 你可以创建一个 Request 对象来更精细地控制请求,例如设置请求方法、头部信息和请求体。
    fetch() 函数也可以直接接受一个 Request 对象作为第一个参数。
  • Promise: fetch API 基于 Promise,这意味着你可以使用 .then().catch()
    方法来处理异步操作的结果和错误。

基本用法:

最简单的 fetch 用法如下:

fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

这段代码向指定的 URL 发送一个 GET 请求。 第一个 .then() 方法处理 Response 对象,并将其转换为 JSON 数据。 第二个 .then() 方法处理 JSON 数据,并将其打印到控制台。 .catch() 方法处理任何错误。

更高级的用法:

你可以通过 options 对象来配置请求:

const options = {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ title: 'foo', body: 'bar', userId: 1 })
};

fetch('https://jsonplaceholder.typicode.com/posts', options)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

这个例子发送一个 POST 请求,包含了自定义的头部信息和请求体。

处理响应:

Response 对象提供了多种方法来处理响应体:

response.json(): 将响应体解析为 JSON 对象。
response.text(): 将响应体解析为文本字符串。
response.blob(): 将响应体解析为 Blob 对象(二进制大对象)。
response.arrayBuffer(): 将响应体解析为 ArrayBuffer 对象。
response.formData(): 将响应体解析为 FormData 对象。

错误处理:

fetch API 的错误处理通常在 .catch() 方法中进行。 但是,需要注意的是,fetch 即使服务器返回错误状态码(例如 404),也不会拒绝 Promise。 你需要检查 response.ok 属性来判断响应是否成功:

fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => {
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

总结:

fetch API 提供了一种强大且灵活的方式来进行网络请求。 它基于 Promise,易于使用,并且提供了丰富的功能来处理各种类型的响应。 然而,你需要注意错误处理和 CORS 问题。 对于更复杂的场景,你可能需要使用 Request 对象来更精细地控制请求。


http://www.kler.cn/news/362089.html

相关文章:

  • 天润融通大模型文本机器人,让客服迈入“无人化”的第一步
  • 汽配企业数字工厂管理系统实施规划方案
  • 打开游戏提示丢失(或找不到)XINPUT1_3.DLL的多种解决办法
  • 递归算法之二分搜索(Binary Search)详细解读
  • 解密 Redis:如何通过 IO 多路复用征服高并发挑战!
  • 秃姐学AI系列之:语义分割 + 数据集 | 转置卷积 + 代码
  • 牛只行为及种类识别数据集18g牛只数据,适用于多种图像识别,目标检测,区域入侵检测等算法作为数据集。数据集中包括牛只行走,站立,进食,饮水等不同类型的数据
  • SpringBoot接收RequestBody数据时,参数大写接收不到数据以及解决办法
  • pm2 守护http-server
  • Redis Search系列 - 第二讲 同义词
  • Go 项目配置的定制化和一体化打包方案
  • 红队老子养成记4 - 不要遇到403就放弃,学会403绕过,找到别人找不到的接口!!(全网最多绕过!)
  • UG NX12.0建模入门笔记:1.0 UG NX12.0安装教程
  • 计算机视觉在疲劳检测中的应用
  • MySQLDBA修炼之道-开发篇(一)
  • webAPI中的触屏事件、轮播图、插件以及本地存储
  • 鸿蒙系统 VS 安卓系统,谁将引领未来移动操作系统?
  • 十九、Python基础语法(字典(dict))
  • Tftpd.exe源代码分析----TftpdIoPostReceiveBuffer函数分析
  • 10月22日,每日信息差
  • 基础学习-centos修改本地语言
  • 【C++】vector(1)
  • Linux中文件的读写过程
  • 制造企业数字化转型顶层规划案例(55页满分PPT)
  • Vue学习笔记(四、v-bind指令)
  • 复旦大学全球供应链研究中心揭牌,合合信息共话大数据赋能