MERN stack学習 39日目
MERN stackの学習を始めて39日目です。
昨日はGETやPOSTなどのHTTPメソッドについて学びました。今日はバックエンドの操作に焦点を当て、サーバーがデータストリームやボディパースをどのように処理するかを学習しました。
ユーザーがフォームやファイルを送信するとき、サーバーはそれを一度にすべて受け取るわけではありません。データは小さな断片として届きます。これらの断片はチャンク(chunks)と呼ばれます。
Node.jsはメモリを節約するためにストリームを使用します。大きなファイルをすぐにサーバーのメモリに読み込むのではなく、データを小さなパーツに分けて処理します。
仕組みは以下の通りです:
- 送信されてくるPOSTデータはReadable Streamとして機能します。
- サーバーはバイナリデータの小さなチャンクを受け取ります。
- データを使用する前に、これらのチャンクを収集する必要があります。
Node.jsでは、リクエストボディを即座に取得できるわけではありません。特定のネットワークイベントをリッスンします:
req.on("data"): 新しいチャンクが届くたびにこのイベントが発生します。これらのチャンクを配列に保存します。req.on("end"): ストリームが終了したときにこのイベントが発生します。これにより、すべてのデータが届いたことがわかります。
Buffer.concat を使用して断片を結合し、それらを文字列に変換します。
この方法により、サーバーの高速かつ効率的な動作が維持されます。また、大きなファイルを扱う際のメモリ不足によるクラッシュを防ぐことができます。
出典: https://dev.to/ali_hamza_589ec7b3eb6688d/day-39-of-learning-mern-stack-hkp