回答:
res.send()
HTTP応答を送信します。その構文は、
res.send([body])
bodyパラメータには、Bufferオブジェクト、String、オブジェクト、または配列を使用できます。例えば:
res.send(new Buffer('whoop'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.status(404).send('Sorry, we cannot find that!');
res.status(500).send({ error: 'something blew up' });
詳しくはこちらをご覧ください。
res.end()
応答プロセスを終了します。この方法は、実際にノードコア、特にから来ているresponse.end()
の方法http.ServerResponse
。データなしで応答をすばやく終了するために使用されます。例えば:
res.end();
res.status(404).end();
詳細については、こちらをお読みください。
express
たことがないので、これを純粋に賛成しなければならなかったが、タイトルから考えた-1つは何かを送信し、1つは何かを終了する....
res.send()
とどうなるでしょうか。これは次のように機能しますres.end()
か?
応答ヘッダーに関するres.end()
&の主な違いres.send()
と、それらが重要である理由をもう少し強調したいと思います。
1. res.send()は出力の構造をチェックし、それに応じてヘッダー情報を設定します。
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
app.get('/',(req,res)=>{
res.send({msg:'hello'});
});
res.end()を使用すると、テキストのみで応答は、それが設定されていないだろうことができ、「コンテンツタイプ」
app.get('/',(req,res)=>{
res.end('<b>hello</b>');
});
2. res.send()は、応答ヘッダーに「ETag」属性を設定します
app.get('/',(req,res)=>{
res.send('<b>hello</b>');
});
tagこのタグが重要なのはなぜですか?
ETag HTTP応答ヘッダーは、リソースの特定のバージョンの識別子です。コンテンツが変更されていない場合、Webサーバーは完全な応答を送信する必要がないため、キャッシュの効率が向上し、帯域幅が節約されます。
res.end()
このヘッダー属性を設定しません
res.send()が行うことは、res.write、res.setHeaders、およびres.endを実装することです。
送信するデータをチェックし、正しいヘッダーを設定します。
次に、res.writeを使用してデータをストリーミングし、最後にres.endを使用してリクエストの終了を設定します。
たとえば、ファイルまたは大きなデータセットをストリーミングしたい場合など、手動で実行したい場合があります。この場合、自分でヘッダーを設定し、ストリームを維持するためにres.writeを使用します。フロー。
res.end
で使用されるプレーンノードで使用されると思いますres.send