RSS DEV コミュニティ

チャンク転送エンコーディングの深掘り

チャンク転送エンコーディングは、HTTP/1.1の機能で、サーバーが全体のレスポンスサイズを事前に知らなくても、データのストリーミングを段階的に行うことができます。ストリーミングAPI、ライブアップデート、大規模または動的に生成されるレスポンスに役立ちます。チャンク転送エンコーディングでは、HTTPレスポンスは一連のチャンクに変更され、それぞれにバイト単位のサイズが接頭辞として付加されます。クライアントは段階的にデータを受信し、長さ0のチャンクが表示されるとレスポンスが終了したことがわかります。FastAPIとcurlを使った実践的な例は、チャンク転送エンコーディングが実際どのように機能するかを示しています。この例では、各チャンクが16進数で長さを先頭に持ち、その後にデータが続き、改行後に次のチャンクが開始される様子を示しています。レスポンスは長さ0のチャンクで終了し、データ伝送の終了を示します。内部的には、Starletteフレームワークは生成されたデータセグメントを受け取り、各チャンクを基盤となるASGIサーバーにプッシュします。ASGIサーバーはHTTP/1.1チャンク転送エンコーディング仕様に従ってフォーマットします。HTTP/2とHTTP/3はチャンクエンコーディングを使用せず、代わりに単一の接続上で複数のストリームを多重化できる、より効率的なバイナリフレームワークレイヤーを使用します。チャンク転送エンコーディングを理解することは、より良いストリーミングAPIを構築し、複雑なHTTPインタラクションを効果的にデバッグするのに役立ちます。
favicon
dev.to
Deep Dive - How Chunked Transfer Encoding Works
記事の画像: チャンク転送エンコーディングの深掘り