有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
Request 代表 HTTP 请求对象,基于 Web APIs 标准 Request 进行设计。
说明
边缘函数中,可通过两种方式获得 Request 对象:
使用 Request 构造函数创建一个 Request 对象,用于 Fetch API 的操作。
使用 FetchEvent 对象 event.request,获得当前请求的 Request 对象。

构造函数

const request = new Request(input: string | Request, init?: RequestInit)

参数

参数名称
类型
必填
说明
input
string | Request
URL 字符串或 Request 对象。
options
Request 对象初始化配置项。

RequestInit

初始化 Request 对象的属性值选项。
属性名
类型
必填
默认值
说明
method
string
GET
请求方法 (GETPOST 等)。
headers
Headers
-
请求头部信息。
body
string |Blob | ArrayBuffer | ArrayBufferView |ReadableStream
-
请求体。
redirect
string
follow
重定向策略,支持 manualerrorfollow
maxFollow
number
12
最大可重定向次数。
version
string
HTTP/1.1
HTTP 版本,支持 HTTP/1.0HTTP/1.1HTTP/2.0
copyHeaders
boolean
-
非 Web APIs 标准选项,表示是否拷贝传入的 Request 对象的 headers。
eo
-
非 Web APIs 标准选项,用于控制边缘函数处理该请求的行为。

RequestInitEoProperties

非 Web APIs 标准选项,用于控制边缘函数处理该请求的行为。
参数名称
类型
必填
说明
resolveOverride
string
用于 fetch 请求下覆盖原有的域名解析, 支持指定域名或者 IP 地址。更多说明如下:
IP 不允许带 scheme 以及端口号。
IPv6 无需使用方括号包裹。
image
图片处理参数配置项。
cacheEverything
boolean
源站响应头是否缓存。
cacheKey
string
用于指定自定义的缓存键。
cacheTtl
number
用于指定缓存时长(单位秒),小于等于0表示不缓存。
cacheTtlByStatus
{[key: string]: number}
根据状态码指定缓存时长(单位秒),小于等于0表示不缓存。
示例:{'200-299': 3600, '404': 10, '500-599': 0}



实例属性

body

// request.body
readonly body: ReadableStream;
请求体,详情参见 ReadableStream

bodyUsed

// request.bodyUsed
readonly bodyUsed: boolean;
标识请求体是否已读取。

headers

// request.headers
readonly headers: Headers;
请求头部,详情参见 Headers

method

// request.method
readonly method: string;
请求方法,默认值为GET

redirect

// request.redirect
readonly redirect: string;
请求重定向策略,可取值有:followerrormanual,默认为 manual

maxFollow

// request.maxFollow
readonly maxFollow: number;
请求最大重定向次数。

url

// request.url
readonly url: string;
请求 url。

version

// request.version
readonly version: string;
请求使用的 HTTP 协议版本。

eo

// request.version
readonly eo: IncomingRequestEoProperties;
边缘函数提供的与当前请求相关的一些其他信息,详情参见 IncomingRequestEoProperties

IncomingRequestEoProperties

客户端请求 event.request 对象包含 eo 属性,其信息如下:
属性名
类型
说明
示例值
geo
描述客户请求的位置信息。
-

GeoProperties

描述客户请求的位置信息。
属性名
类型
说明
示例值
asn
number
ASN
132203
countryName
string
国家名
Singapore
countryCodeAlpha2
string
国家的 ISO-3611 alpha2 代码
SG
countryCodeAlpha3
string
国家的 ISO-3611 alpha3 代码
SGP
countryCodeNumeric
string
国家的 ISO-3611 numeric 代码
702
regionName
string
区域名
-
regionCode
string
区域代码
AA-AA
cityName
string
城市名
singapore
latitude
number
纬度
1.29027
longitude
number
经度
103.851959

实例方法

注意
获取请求体方法,接收 HTTP body 最大字节数为 1M,超出大小会抛出 OverSize 异常。超出大小时推荐使用 request.body 流式读取,详情参见 ReadableStream

arrayBuffer

request.arrayBuffer(): Promise<ArrayBuffer>;
获取请求体,解析结果为 ArrayBuffer

blob

request.blob(): Promise<Blob>;
获取请求体,解析结果为 Blob

clone

request.clone(copyHeaders?: boolean): Request;
创建请求对象的副本。

参数

参数名称
类型
必填
说明
copyHeaders
boolean
开启复制请求头,默认值为 false,取值说明如下。
true
复制原对象的请求头。
false
引用原对象的请求头。

json

request.json(): Promise<object>;
获取请求体,解析结果为 json

text

request.text(): Promise<string>;
获取请求体,解析结果为文本字符串。

formData

request.formData(): Promise<FormData>;
获取响应体,解析结果为 FormData

参数

参数名称
类型
必填
说明
cookies
Cookies
新的 Cookies 对象。

示例代码

async function handleRequest() {
const request = new Request('https://www.tencentcloud.com/');
const response = await fetch(request);
return response;
}

addEventListener('fetch', (event) => {
event.respondWith(handleRequest());
});

相关参考