更新时间:2024-08-14 19:50:31
fetch() 方法提供了一个用于通过 HTTP 请求异步获取资源的接口,您可以在Edge Cloud Apps 函数中使用它。
注意: 异步任务(如 fetch())必须在处理程序内部执行。如果您尝试在全局作用域内调用 fetch(),您的函数将返回错误。
fetch(resource, options); // options 可选
fetch() 函数返回一个 Promise 对象,该对象最终会解析为一个 Response 对象。
resource: Request | string | URL
要获取的资源,可以是 Request 对象、字符串或 URL 对象。
options (可选): object
一个对象,用于定义请求的内容和行为。可选属性包括:
method: 请求方法,例如 GET、POST、PUT、DELETE 等。headers: 请求头,一个包含请求头键值对的对象。body: 请求体,可以是字符串、FormData、Blob、ArrayBuffer 等。mode: 请求模式,例如 cors、no-cors、same-origin 等。credentials: 凭证模式,例如 include、same-origin、omit 等。cache: 缓存模式,例如 default、no-cache、reload、force-cache、only-if-cached 等。redirect: 重定向模式,例如 follow、error、manual 等。referrer: 请求的引用者,可以是字符串或 URL 对象。referrerPolicy: 请求的引用者策略,例如 no-referrer、no-referrer-when-downgrade、origin、origin-when-cross-origin、same-origin、strict-origin、strict-origin-when-cross-origin、unsafe-url 等。integrity: 请求的完整性元数据,用于验证响应的完整性。keepalive: 一个布尔值,指示是否保持连接。signal: 一个 AbortSignal 对象,用于中止请求。ignoreHttpsCert: 一个布尔值,指示是否忽略 HTTPS 证书验证错误,默认为 false。cdnCache: 一个对象,用于配置 CDN 缓存行为,可选属性包括:
ignoreCache: 布尔值,指示是否忽略 CDN 缓存,默认为 false。maxAge: 数字,以秒为单位设置缓存对象的有效期。sMaxAge: 数字,以秒为单位设置共享缓存对象的有效期,仅对 public 缓存生效。以下代码段展示了如何使用 fetch() 方法发出 POST 请求,并设置忽略 HTTPS 证书错误和 CDN 缓存行为:
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const init = {
method: 'POST',
headers: {
'content-type': 'application/json;charset=UTF-8',
'custom-header1': 'value1',
'custom-header2': 'value2'
},
body: JSON.stringify({
key1: 'value3',
key2: 'value4'
}),
// 忽略 HTTPS 证书验证错误
ignoreHttpsCert: true,
// 配置 CDN 缓存行为
cdnCache: {
ignoreCache: false,
maxAge: 3600,
sMaxAge: 1800
}
}
// 发起请求
const response = await fetch('http://example.com', init)
// 将请求返回给客户端
return response
}