Node.jsでres.end()とres.send()の違い
**res.end()**は、HTTPレスポンスの終了を指示するメソッドです。これにより、サーバからクライアントへのデータ送信が完了し、接続が閉じられます。通常、res.end()の前に、レスポンスのヘッダとボディを設定します。
**res.send()**は、HTTPレスポンスのステータスコード、ヘッダ、およびボディを設定し、その後res.end()を呼び出してレスポンスを終了するメソッドです。res.send()は、レスポンスのステータスコードとボディのデータ型を自動的に決定します。
- res.send()は、レスポンスのステータスコード、ヘッダ、およびボディを設定し、その後res.end()を呼び出します。
- res.end()は、レスポンスの終了を直接指示します。
例
// res.end()の使用
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write('Hello, World!');
res.end();
// res.send()の使用
res.send('Hello, World!');
res.end()
const http = require('http');
http.createServer((req, res) => {
// レスポンスのヘッダを設定
res.writeHead(200, {'Content-Type': 'text/plain'});
// レスポンスのボディを設定
res.write('Hello, World!');
// レスポンスを終了
res.end();
}).listen(3000);
このコードでは、HTTPサーバーを作成し、クライアントからのリクエストを受け取ったときに、以下の処理を行います。
- レスポンスのヘッダを設定します。ステータスコードは200(OK)で、コンテンツタイプはプレーンテキストです。
- レスポンスのボディを設定します。
- res.end()を呼び出して、レスポンスを終了します。これにより、サーバからクライアントへのデータ送信が完了し、接続が閉じられます。
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(3000);
このコードでは、Expressフレームワークを使用してHTTPサーバーを作成し、ルートエンドポイント(/)へのGETリクエストを受け取ったときに、以下の処理を行います。
- res.send()を呼び出して、レスポンスのステータスコード、ヘッダ、およびボディを設定します。この場合、ステータスコードは200(OK)で、コンテンツタイプはプレーンテキストとなり、ボディには"Hello, World!"という文字列が設定されます。
- res.send()は内部的にres.end()を呼び出して、レスポンスを終了します。
- res.write()とres.end()の組み合わせ
この方法は、複数のデータチャンクを段階的に送信する場合に使用されます。res.write()でチャンクごとにデータを書き込み、最後にres.end()でレスポンスを終了します。const http = require('http'); http.createServer((req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello, '); res.write('World!'); res.end(); }).listen(3000);
-
res.sendFile()
const express = require('express'); const app = express(); app.get('/', (req, res) => { res.sendFile(__dirname + '/public/index.html'); }); app.listen(3000);
この方法は、静的なファイルをレスポンスとして送信する場合に使用されます。res.sendFile()は、指定されたファイルパスからファイルを読み込み、レスポンスのコンテンツタイプを適切に設定して送信します。
-
res.json()
const express = require('express'); const app = express(); app.get('/', (req, res) => { const data = { message: 'Hello, World!' }; res.json(data); }); app.listen( 3000);
この方法は、JSON形式のデータをレスポンスとして送信する場合に使用されます。res.json()は、渡されたオブジェクトを自動的にJSONに変換し、レスポンスのコンテンツタイプを"application/json"に設定します。
- res.sendFile()は、静的なファイルを送信する場合に使用されます。
- res.json()は、JSON形式のデータを送信する場合に使用されます。
- res.write()とres.end()の組み合わせは、複数のデータチャンクを送信する場合に使用されます。
node.js express