1. 開発者向けのウェブ技術
  2. Web API
  3. Response
  4. body

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Response: body プロパティ

Baseline 広く利用可能 *

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2019年1月以降、すべてのブラウザーで利用可能です。

* この機能の一部は、対応レベルが異なる場合があります。

bodyResponse インターフェイスの読み取り専用プロパティで、本体コンテンツの ReadableStream です。

ReadableStream、または Response オブジェクトが構築時に body プロパティが null であった場合、あるいは HTTP レスポンス本体がなかった場合には null になります。

ストリームは読み取り可能なバイトストリームで、 ReadableStreamBYOBReader を用いたゼロコピー移譲に対応しています。

メモ: 現在のブラウザーは、本体なしのレスポンス(例えば、 HEAD リクエストに対するレスポンスや、 204 No Content レスポンス)には body プロパティを null に設定するという仕様に実際には適合していません。

画像の複製

単純なストリームポンプの例では、画像を読み取り、 response.body を使用してレスポンスのストリームを公開し、ReadableStream.getReader() を使用してリーダーを作成し、そのストリームのチャンクを 2 番目のカスタム読み取り可能なストリームのキューに入れます。画像の同一コピーを効果的に作成します。

js
const image = document.getElementById("target");
// 元の画像をフェッチ
fetch("./tortoise.png")
 // その body を ReadableStream として取得
 .then((response) => response.body)
 .then((body) => {
 const reader = body.getReader();
 return new ReadableStream({
 start(controller) {
 return pump();
 function pump() {
 return reader.read().then(({ done, value }) => {
 // データを消費する必要がなくなったら、ストリームを閉じます
 if (done) {
 controller.close();
 return;
 }
 // 次のデータチャンクを対象のストリームのキューに入れます
 controller.enqueue(value);
 return pump();
 });
 }
 },
 });
 })
 .then((stream) => new Response(stream))
 .then((response) => response.blob())
 .then((blob) => URL.createObjectURL(blob))
 .then((url) => console.log((image.src = url)))
 .catch((err) => console.error(err));

BYOB リーダーの作成

この例では、 ReadableStreamBYOBReader を使用して本体から ReadableStream.getReader({mode: 'byob'}) を構築します。このリーダーを使用して、レスポンスデータのゼロコピー移譲を実装することができます。

js
async function getProducts(url) {
 const response = await fetch(url);
 const reader = response.body.getReader({ mode: "byob" });
 // このレスポンスを読む
}
getProducts(
 "https://mdn.github.io/learning-area/javascript/apis/fetching-data/can-store/products.json",
);

仕様書

仕様書
Fetch
# ref-for-dom-body-body1

ブラウザーの互換性

関連情報

MDN の改良に協力

協力方法を知る

このページは MDN の貢献者によって に最終更新されました。

AltStyle によって変換されたページ (->オリジナル) /