response 是只读的 http 响应封装体,提供 status、statustext、ok、url、redirected、type 等只读元信息,headers 可读取响应头,body 为单次读取的 readablestream;需用 json()、text() 等异步方法解析数据,并支持 clone() 解决流复用问题。

fetch 请求成功后返回的 Response 对象,是只读的、不可直接修改的响应封装体。它不包含解析后的数据(比如 JSON 或文本),而是提供访问原始 HTTP 响应信息的接口。关键在于:它本身不是最终数据,而是通往数据的“门”。
状态与基本元信息
这些属性反映请求是否在协议层面完成,以及服务器返回的基础响应标识:
-
status:HTTP 状态码(如
200、404、500),数值类型,只读 -
statusText:对应状态码的文字描述(如
"OK"、"Not Found"),字符串类型,只读 -
ok:布尔值,仅当
status在200–299范围内才为true;404和500都是false,但不会触发catch - url:实际响应的最终 URL(可能和请求 URL 不同,比如发生重定向后)
- redirected:布尔值,表示响应是否来自重定向过程
-
type:响应类型,如
"basic"(同源)、"cors"(跨域且带 CORS 头)、"error"(网络错误导致无响应)等
响应头与主体流
Header 和 body 是 Response 的两个核心组成部分,一个可读取,一个需异步消费:
将一个或多个视频上传至YouTube。当用户想“上传到YouTube”“发YouTube”“批量上传”“upload to YouTube”“post videos to YouTube”或发布到YouTube时使用此技能。
-
headers:一个
Headers对象,可用get()、has()、entries()等方法读取响应头(如response.headers.get('Content-Type')) -
body:一个
ReadableStream实例,代表响应体的字节流;它只能被读取一次,后续再调用读取方法会失败
常用数据解析方法(都返回 Promise)
因为 body 是流,所以所有解析方法都是异步的,必须用 await 或 .then() 获取结果:
-
json():解析为 JavaScript 对象,适用于
Content-Type: application/json - text():解析为字符串,适合 HTML、纯文本、XML 等
-
blob():解析为
Blob对象,常用于图片、PDF、下载文件等二进制内容 -
arrayBuffer():解析为
ArrayBuffer,适合底层二进制操作或与 WebAssembly 交互 -
formData():解析为
FormData对象,适用于服务器返回表单格式数据(multipart/form-data)
额外实用能力
Response 还提供一些辅助功能来应对常见需求:
- clone():创建 Response 的副本,解决“body 只能读一次”的限制(例如同时存日志又渲染页面)
-
Body 接口继承:Response 实现了
Body接口,因此上述json()、text()等方法其实都来自该接口










