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

JavaScript的fetch函数的用法

基本语法

fetch函数用于发起网络请求,返回一个Promise对象。基本语法如下:

fetch(url, options).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));

GET请求

发起一个简单的GET请求,获取JSON数据:

fetch('https://api.example.com/data').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:', error));

POST请求

发送JSON数据到服务器:

fetch('https://api.example.com/data', {method: 'POST',headers: {'Content-Type': 'application/json',},body: JSON.stringify({key1: 'value1',key2: 'value2'})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

处理响应

fetch返回的Response对象包含多种方法处理不同格式的响应:

fetch('https://api.example.com/data').then(response => {if (response.ok) {return response.text(); // 或.json(), .blob(), .arrayBuffer()等}throw new Error('Network response was not ok');}).then(data => console.log(data)).catch(error => console.error('Error:', error));

错误处理

由于fetch只在网络错误时reject,需要手动处理HTTP错误状态:

fetch('https://api.example.com/data').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));

请求配置

可配置的选项包括method、headers、body、mode、credentials等:

fetch('https://api.example.com/data', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': 'Bearer token'},body: JSON.stringify({key: 'value'}),credentials: 'include' // 包含cookies
});

取消请求

使用AbortController可以取消fetch请求:

const controller = new AbortController();
const signal = controller.signal;fetch('https://api.example.com/data', {signal}).then(response => response.json()).then(data => console.log(data)).catch(error => {if (error.name === 'AbortError') {console.log('Fetch aborted');} else {console.error('Error:', error);}});// 取消请求
controller.abort();

http://www.dtcms.com/a/326975.html

相关文章:

  • C++11新增关键字和范围for循环
  • 【限时分享:Hadoop+Spark+Vue技术栈电信客服数据分析系统完整实现方案
  • 基于Python的《红楼梦》文本分析与机器学习应用
  • Uniapp物联网平台登录与温湿度监测系统
  • 【电子硬件】EMI中无源晶振的优势
  • 从原理到实践:一文掌握Kafka的消息生产与消费
  • Web前端小游戏轮盘。
  • 开发避坑指南(23):Tomcat高版本URL特殊字符限制问题解决方案(RFC 7230 RFC 3986)
  • Python Day28 HTML 与 CSS 核心知识点 及例题分析
  • @Rancher简介部署使用 - Docker Compose
  • 第五章 特征值与特征向量
  • vue3 实现web网页不同分辨率适配
  • 【狂热算法篇】探寻图论幽径之SPFA算法:图论迷宫里的闪电寻径者(通俗易懂版)
  • http网页部署
  • AI Agent——基于 LangGraph 的多智能体任务路由与执行系统实战
  • 微算法科技(NASDAQ:MLGO)开发经典增强量子优化算法(CBQOA):开创组合优化新时代
  • Git与CI/CD相关知识点总结
  • 【element树组件】el-tree实现连接线及hover编辑效果
  • 机器学习处理文本数据
  • Linux Ansible的安装与基本使用
  • 【C++】5. 内存管理
  • 医美产业科技成果展陈中心:连接微观肌肤世界与前沿科技的桥梁
  • 【网络运维】Linux和自动化:Ansible
  • 基于.net高校财务管理系统/c#/asp.net/sql server 设计开发
  • Spring Boot项目使用WebClient调用第三方接口详细教程
  • Fiddler国内中文网使用经验分享,从抓包入门到API调试进阶
  • 知名B2B订货系统推荐,核货宝、数商云、易订货小程序订货系统深度评测
  • 基于开源AI大模型AI智能名片S2B2C商城小程序的母婴用品精准营销策略研究
  • 小程序打通美团核销:解锁到店综合业态私域密码,赋能6000+门店破局增长
  • 小程序排名优化:功能迭代如何助力排名攀升