我们使用 Cookie 来改善您的体验。

Cookie 政策
Logo of Lexmount
文档模板博客帮助中心
GitHub
Logo of LexmountLexmount Browser

开始使用

Lexmount 文档
控制台使用指南

Browser

Web Fetch

概览快速开始
常见错误

Web Search

概览快速开始搜索接口

运行时

概览快速开始
概览fetchlexmount:env
lexmount:browser
示例

帮助与计费

能力名词 FAQ
更新日志联系支持
接口参考

fetch

从云端运行环境发送请求、读取响应并取消网络操作。

全局 fetch 从云端运行环境发起请求,可用于调用公共 API、上传数据和流式读取响应,无需导入模块。访问客户端本机或内网服务时,使用 lexmount:remote 的 host.fetch。

const response = await fetch('https://example.com');
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.text());

fetch(input, init?)

功能: 发送请求,在收到响应头后返回响应对象。读取正文是后续独立的异步操作。

declare function fetch(input: string | URL | Request, init?: RequestInit): Promise<Response>;
参数类型必填说明
inputstring / URL / Request是完整 URL,或已有请求对象
initRequestInit否请求配置;指定字段覆盖 input 请求中的相应配置
init.methodstring否默认 GET;GET / HEAD 不能携带正文
init.headersHeadersInit否Headers、字符串键值对象或 [名称, 值] 数组
init.bodyBodyInit / null否字符串、Blob / File、ArrayBuffer / ArrayBufferView(含 TypedArray、DataView)、FormData、URLSearchParams 或字节 ReadableStream
init.signalAbortSignal / null否取消等待响应或读取正文,默认不主动取消
init.redirectRequestRedirect否follow(默认)、manual 或 error

返回值: Promise<Response>。HTTP 4xx / 5xx 正常返回响应,应检查 ok 或 status。网络、解析、TLS 或目标地址校验失败时 Promise 拒绝;非法方法、已使用的正文等也可能导致 TypeError。

传入 FormData 时让运行时生成含 boundary 的 Content-Type;JSON 需先 JSON.stringify() 并设置相应请求头。ReadableStream 上传使用字节分块。

以下 RequestInit 字段也可传入,但当前仅保留在请求对象中,不提供对应的浏览器缓存、Cookie、CORS 或完整性校验机制:

字段类型 / 可选值默认值与说明
referrerstringabout:client;也可为空字符串或完整 URL
referrerPolicyReferrerPolicy默认空字符串;另接受 no-referrer、no-referrer-when-downgrade、same-origin、origin、strict-origin、origin-when-cross-origin、strict-origin-when-cross-origin、unsafe-url
mode'cors' / 'same-origin' / 'no-cors'cors;不接受 navigate
credentials'omit' / 'same-origin' / 'include'same-origin;不会自动附加登录 Cookie
cache'default' / 'no-store' / 'reload' / 'no-cache' / 'force-cache' / 'only-if-cached'default;only-if-cached 要求 mode 为 same-origin
integritystring空字符串;不执行子资源完整性校验
keepalivebooleanfalse;不保证任务结束后请求继续执行
priority'auto' / 'high' / 'low'auto;不保证网络调度优先级

网络范围与请求选项

HTTP(S) 请求仅允许公网目标,DNS 解析结果和每一跳重定向也受限制。回环、私网及其他非公网地址会被拒绝。data: 和 blob: URL 可用于读取内联或本次环境中的对象数据,不经过 HTTP 网络。

服务端请求没有浏览器页面的相对 URL 基址、登录 Cookie Jar 或浏览器 HTTP 缓存;credentials、mode、cache 等浏览器侧选项不能建立这些能力。需要认证时显式设置请求头。宿主代理和证书信任由平台管理,业务环境变量不能重新配置请求客户端。

Response

以下为 fetch() 返回的响应属性:

属性类型说明
okboolean状态码是否为 200~299
statusnumberHTTP 状态码
statusTextstring状态文本,可能为空
headersHeaders响应头;headers.get(name) 返回字符串或 null,支持迭代
urlstring响应 URL
redirectedboolean是否经过自动重定向
typeResponseType响应类型
bodyReadableStream<Uint8Array> / null按需读取的字节流;HEAD 等无正文响应为 null
bodyUsedboolean正文是否已经开始消费

正文读取方法

下列方法均不接收参数。除 clone() 外,都会消费整个正文并返回 Promise;同一个正文只能消费一次。

方法功能返回值
response.text()按 UTF-8 解码正文Promise<string>
response.json()将正文解析为 JSON;非法 JSON 会拒绝Promise<any>
response.arrayBuffer()获取完整原始字节Promise<ArrayBuffer>
response.bytes()获取完整字节数组Promise<Uint8Array>
response.blob()获取含媒体类型的二进制对象Promise<Blob>
response.formData()解析支持的表单编码正文Promise<FormData>
response.clone()在正文未使用或锁定前复制响应,分流正文Response,同步返回

流式读取时使用 response.body.getReader();完成后释放 reader 锁。不准备读取正文时调用 await response.body?.cancel();正文已被 reader 锁定时通过 reader 取消。完整读取会占用相应内存,克隆后也应消费或取消各分支。

取消与超时

fetch() 没有 timeoutMs 参数。可传入 AbortSignal.timeout(milliseconds),或调用 AbortController.abort(reason?);取消会影响请求及其响应正文,Promise 或正在进行的读取会拒绝。

const response = await fetch('https://example.com', {
  signal: AbortSignal.timeout(10000),
});
console.log(await response.text());

超时信号通常以 TimeoutError 拒绝,控制器未指定原因时使用 AbortError;自行传入原因时按该原因处理。任务停止或超时也会清理网络资源。取消不能撤回目标服务已经执行的业务操作。

通过默认导出提供 HTTP 服务的方式见公开 HTTP 服务示例。

概览

JavaScript 运行时提供的 Web API 与 lexmount 内置模块。

lexmount:env

读取实例为本次执行提供的只读环境变量。

目录

fetch(input, init?)
网络范围与请求选项
Response
正文读取方法
取消与超时

问题没有解决?