Request
说明
边缘函数中,可通过两种方式获得
Request
对象:使用 Request 构造函数创建一个 Request 对象,用于 Fetch API 的操作。
使用 FetchEvent 对象 event.request,获得当前请求的 Request 对象。
构造函数
const request = new Request(input: string | Request, init?: RequestInit)
参数
参数名称 | 类型 | 必填 | 说明 |
input | 是 | URL 字符串或 Request 对象。 | |
options | 否 | Request 对象初始化配置项。 |
RequestInit
初始化 Request 对象的属性值选项。
属性名 | 类型 | 必填 | 默认值 | 说明 |
method | string | 否 | GET | 请求方法 ( GET 、POST 等)。 |
headers | 否 | - | 请求头部信息。 | |
body | 否 | - | 请求体。 | |
redirect | string | 否 | follow | 重定向策略,支持 manual 、error 和 follow 。 |
maxFollow | number | 否 | 12 | 最大可重定向次数。 |
version | string | 否 | HTTP/1.1 | HTTP 版本,支持 HTTP/1.0 、HTTP/1.1 和 HTTP/2.0 。 |
copyHeaders | boolean | 否 | - | 非 Web APIs 标准选项,表示是否拷贝传入的 Request 对象的 headers。 |
eo | 否 | - | 非 Web APIs 标准选项,用于控制边缘函数处理该请求的行为。 |
RequestInitEoProperties
非 Web APIs 标准选项,用于控制边缘函数处理该请求的行为。
参数名称 | 类型 | 必填 | 说明 |
resolveOverride | string | 否 | IP 不允许带 scheme 以及端口号。 IPv6 无需使用方括号包裹。 |
image | 否 | 图片处理参数配置项。 | |
cacheEverything | boolean | 否 | 源站响应头是否缓存。 |
cacheKey | string | 否 | 用于指定自定义的缓存键。 |
cacheTtl | number | 否 | 用于指定缓存时长(单位秒),小于等于0表示不缓存。 |
cacheTtlByStatus | {[key: string]: number} | 否 | 根据状态码指定缓存时长(单位秒),小于等于0表示不缓存。 示例:{'200-299': 3600, '404': 10, '500-599': 0} |
ImageProperties
参数名称 | 类型 | 必填 | 说明 |
format | string | 否 | 将原图转换为指定格式,支持 jpg 、gif 、png 、bmp 、webp 、avif 、jp2 、jxr 、heif 。 |
long | number | 否 | 指定长边,短边未指定时,短边自适应。 |
short | number | 否 | 指定短边,长边未指定时,长边自适应。 |
width | number | 否 | 指定宽度,高度未指定时,高度自适应。 |
height | number | 否 | 指定高度,宽度未指定时,宽度自适应。 |
实例属性
body
// request.bodyreadonly body: ReadableStream;
bodyUsed
// request.bodyUsedreadonly bodyUsed: boolean;
标识请求体是否已读取。
headers
// request.headersreadonly headers: Headers;
method
// request.methodreadonly method: string;
请求方法,默认值为
GET
。redirect
// request.redirectreadonly redirect: string;
请求重定向策略,可取值有:
follow
、error
、manual
,默认为 manual
。maxFollow
// request.maxFollowreadonly maxFollow: number;
请求最大重定向次数。
url
// request.urlreadonly url: string;
请求 url。
version
// request.versionreadonly version: string;
请求使用的 HTTP 协议版本。
eo
// request.versionreadonly eo: IncomingRequestEoProperties;
IncomingRequestEoProperties
属性名 | 类型 | 说明 | 示例值 |
geo | 描述客户请求的位置信息。 | - |
GeoProperties
描述客户请求的位置信息。
属性名 | 类型 | 说明 | 示例值 |
asn | number | 132203 | |
countryName | string | 国家名 | Singapore |
countryCodeAlpha2 | string | SG | |
countryCodeAlpha3 | string | SGP | |
countryCodeNumeric | string | 702 | |
regionName | string | 区域名 | - |
regionCode | string | 区域代码 | AA-AA |
cityName | string | 城市名 | singapore |
latitude | number | 纬度 | 1.29027 |
longitude | number | 经度 | 103.851959 |
实例方法
注意
arrayBuffer
request.arrayBuffer(): Promise<ArrayBuffer>;
blob
request.blob(): Promise<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>;
kie 值。
参数
参数名称 | 类型 | 必填 | 说明 |
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());});