Fetch API 教程:类型脚本的高级用法
fetch API 类型脚本 是现代 JavaScript 开发中一种强大的工具,提供了一种简化和灵活的方式来处理 HTTP 请求。本文将全面探讨 Fetch API 的用法、特性以及如何在项目中进行有效应用。
基本用法与核心差异
Fetch API 是 XMLHttpRequest 的现代替代方案,具备更好的可读性和模块化设计。其主要优势包括:
-
使用 Promise 而非回调函数:这使得代码更加简洁明了,通过链式调用
.then()和.catch(),可以更好地处理异步操作。 -
模块化设计:API 分散在多个对象上(如 Response、Request、Headers),相比 XMLHttpRequest 的集中式设计,Fetch API 更加灵活。
-
支持数据流处理:可以分块读取数据,减少内存占用,尤其适合大文件和慢速网络环境。
一个简单的 Fetch 请求示例如下:
fetch('https://api.github.com/users/ruanyf')
.then(response => response.json())
.then(json => console.log(json))
.catch(err => console.log('Request Failed', err));
Response 对象:处理 HTTP 回应
同步属性与状态判断
Fetch 请求返回一个 Response 对象,用于处理服务器的 HTTP 回应。可以通过其同步属性快速获取响应状态信息:
Response.status返回 HTTP 状态码。Response.statusText返回状态信息。Response.ok返回请求是否成功(状态码 200-299)。
判断请求是否成功的示例:
async function fetchText() {
let response = await fetch('/readme.txt');
if (response.ok) {
return await response.text();
} else {
throw new Error(response.statusText);
}
}
读取内容的方法
Response 对象提供多种方法来读取服务器返回的数据:
response.text():获取文本数据。response.json():获取 JSON 数据。response.blob():获取二进制数据。response.formData():获取 FormData 对象。response.arrayBuffer():获取 ArrayBuffer 对象。
定制 HTTP 请求:Fetch 的第二个参数
Fetch 的第二个参数是一个配置对象,用于自定义请求:
- 方法设置:通过
method属性设置 HTTP 方法(如 GET、POST)。 - 标头设置:通过
headers属性自定义请求头。 - 数据体:通过
body属性设置请求的数据体。
POST 请求示例
const response = await fetch(url, {
method: 'POST',
headers: {
"Content-type": "application/x-www-form-urlencoded; charset=UTF-8",
},
body: 'foo=bar&lorem=ipsum',
});
提交 JSON 数据
const user = { name: 'John', surname: 'Smith' };
const response = await fetch('/article/fetch/post/user', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(user)
});
Fetch 配置对象的完整 API
Fetch 的配置对象提供了多种选项来控制请求行为,包括:
- cache:指定缓存策略(如
default、no-store、reload)。 - mode:指定请求模式(如
cors、same-origin)。 - credentials:指定是否发送 Cookie(如
same-origin、include)。 - redirect:指定跳转策略(如
follow、error、manual)。 - keepalive:在页面卸载时,保持连接以继续发送数据。
取消 Fetch 请求
可以使用 AbortController 对象来取消 Fetch 请求。这在处理长时间运行的请求时特别有用。
let controller = new AbortController();
let signal = controller.signal;
fetch(url, { signal: controller.signal });
controller.abort(); // 取消请求
参考链接
FAQ
-
问:Fetch API 如何处理跨域请求?
- 答:Fetch 支持 CORS,通过
mode属性设置为cors来实现跨域请求。
- 答:Fetch 支持 CORS,通过
-
问:如何在 Fetch 中上传文件?
- 答:可以使用
FormData对象将文件与其他数据一起上传。
- 答:可以使用
-
问:如何在 Fetch 请求中发送 Cookie?
- 答:通过
credentials属性设置为include可以在跨域请求中发送 Cookie。
- 答:通过
Fetch API 提供了一个现代化、简洁和模块化的方式来处理 HTTP 请求,显著提升了 JavaScript 开发的效率和代码可读性。通过以上的介绍和示例,希望能帮助您更好地理解和应用 Fetch API。
最新文章
- Google DeepMind发布 Genie 3与Shopify:2小时上线电商3D样板间实战
- FLUX.1 Kontext API 使用完全指南:解锁文本驱动的智能图像编辑
- 如何防范User-Agent信息伪装引发的API访问风险
- 苹果支付流程:从零开始的接入指南
- 全面掌握 OpenAPI 规范:定义、生成与集成指南
- 深入解析granularity是什么?颗粒度中文详解
- Deribit API – 入门指南
- REST API命名规范的终极指南:清晰度和一致性的最佳实践
- Go:基于 MongoDB 构建 REST API — Fiber 版
- 免费IP地址查询API接口推荐
- 【2025】AI 占星报告批量生成器|基于 Astro-Seek API 微调 7B 模型,一键输出每日/每周运势
- 微信API接口调用凭证+Access token泄露