# Fetch API

Fetch API (opens new window) 提供了一个 JavaScript 接口,用于访问和操纵 HTTP 管道的一些具体部分,例如请求和响应。

全局 fetch() (opens new window) 方法用于发起网络请求,基于 Promise 机制,主要包含以下核心组件:

# 一、核心类

# Headers

构造函数

使用 Headers() (opens new window) 构造方法创建一个新的 Headers (opens new window) 对象。

// 初始化创建
const headers1 = new Headers({ "Content-Type": "text/plain" });

// 基于已有对象复制
const originalHeaders = new Headers({ Authorization: "Bearer token" });
const headers2 = new Headers(originalHeaders);

实例方法

  • headers.append (opens new window)(name, value)

    追加或修改头信息。

    headers.append("Cache-Control", "max-age=3600");
    headers.append("X-Custom-Header", "value");
    

# Request

构造函数

使用 Request() (opens new window) 构造方法创建一个新的 Request (opens new window) 对象。

// 基础请求
const request1 = new Request("/api/data");

// 带配置项的请求
const request2 = new Request("https://api.example.com", {
  method: "POST",
  headers: new Headers({ "Content-Type": "application/json" }),
  body: JSON.stringify({ key: "value" })
});

实例属性

# Response

构造函数

使用 Response() (opens new window) 构造函数创建一个新的 Response (opens new window) 对象。

// 创建自定义响应
const response = new Response(JSON.stringify({ data: "test" }), {
  status: 200,
  headers: new Headers({ "Content-Type": "application/json" })
});

实例属性

# 二、Fetch

全局作用域中的 fetch() (opens new window) 方法用于发起资源请求,返回一个在响应到达时解析为 Response 对象的 Promise。

# 基础用法

fetch("https://api.ipify.org/?format=json")
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error("Error:", error));

# 高级配置

// 带请求配置的示例
fetch(new Request("https://api.ipify.org", {
  headers: { "User-Agent": "Cloudflare Workers" }
}))
  .then(res => res.text())
  .then(ip => console.log("Public IP:", ip));