ホームページ  >  記事  >  ウェブフロントエンド  >  Node の setHeader と writeHead を簡単に比較し、その違いについて説明します。

Node の setHeader と writeHead を簡単に比較し、その違いについて説明します。

青灯夜游
青灯夜游転載
2022-03-23 20:04:102463ブラウズ

NodejssetHeader と writeHead の違いは何ですか?次の記事では setHeader と writeHead を比較し、その違いについて説明します。

Node の setHeader と writeHead を簡単に比較し、その違いについて説明します。

今日、Node を勉強していたら、Node/http## で setHeader# を発見しました。 writeHead と非常に似ています。どちらも応答ヘッダーを設定できます。詳しく説明します。

setHeader

Parameter

response.setHeader(name, value)复制代码
    name 属性
  • value 属性値
  • Return
  • http.ServerResponse 応答オブジェクトを返す

Function

応答ヘッダーに単一の属性を設定します。

    属性は 1 つずつしか設定できません
    属性を繰り返し設定すると、以前の属性が置き換えられます。 settings
    無効な文字を含む属性フィールド名または値を設定すると、
  • TypeError

Example が発生します。

reponse.setHeader('Content-Type', 'text/html')
reponse.setHeader('Set-Cookie', ['type=ninja', 'language=javascript'])

属性を繰り返し設定します

// 返回 content-type = text/html1
reponse.setHeader('Content-Type', 'text/html')
reponse.setHeader('Content-Type', 'text/html1')

Node の setHeader と writeHead を簡単に比較し、その違いについて説明します。

#writeHead

Parameter

response.writeHead(statusCode, [statusMessage], [headers])

    statusCode http ステータス コード
  • statusMessage ステータス メッセージ (オプション)
  • headers | プロパティ オブジェクトまたは配列 (オプション)
  • Return
  • http.ServerResponse

    応答オブジェクトを返す

Node の setHeader と writeHead を簡単に比較し、その違いについて説明します。##Function

setHeader

Note

と同じ効果があります。

# 複数の属性を設定できます。setHeader は 1 つのみ設定できます。
  • は 1 回だけ呼び出すことができます。
  • になければなりません。 response.end ()
  • 前に呼び出されます

    無効な文字を含む属性フィールド名または値を設定すると、
  • TypeError
  • が発生します。 ## スローされる

    ##Example

writeHead は ServerResponse オブジェクトを返すため、チェーン呼び出しを行うことができます

const body = 'hello world';
response
  .writeHead(200, {
    'Content-Length': Buffer.byteLength(body),
    'Content-Type': 'text/plain'
  })
  .end(body);
ここでの Content-Length はバイト単位であり、バイト単位ではありません。文字。 Buffer.byteLength() はテキストの長さを決定するために使用されます。

Nodejs は Content-Length が送信された本文の長さと一致するかどうかをチェックしません

setHeader と writeHead を同時に使用します

// 返回 content-type = text/plain
const server = http.createServer((req, res) => {
  res.setHeader('Content-Type', 'text/html');
  res.setHeader('X-Foo', 'bar');
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('ok');
});

writeHead

setHeader

よりも優先度が高く、writeHead は 1 回しか呼び出すことができないため、呼び出すときは、まずどのヘッダーが頻繁に変更されないかを考慮してから、writeHead## を呼び出します。 #ヘッダーを設定するために setHeader が呼び出された場合、そのヘッダーは writeHead

merge

このメソッドが呼び出された場合に渡されます。 response はまだ呼び出されていません (.setHeader())、指定されたヘッダー値はネットワーク チャネルに直接書き込まれ、内部的にはキャッシュされません。ヘッダーの response.getHeader()

) は期待した結果を生成しません。将来の取得や変更の可能性を考慮してヘッダーを段階的に設定する必要がある場合は、代わりに

response.setHeader() を使用してください。 #概要##setHeader はヘッダーを 1 つずつ設定することしかできませんが、writeHead は一度に複数のヘッダーを設定できます

setHeader は繰り返し呼び出すことができ、writeHead は 1 回だけ呼び出すことができます

  • setHeader と writeHead は同時に表示され、setHeader は writeHead にマージされ、writeHead の優先度が高くなります

  • writeHead はステータス コードとステータス情報を設定できます。setHeader は設定できません。ヘッダーのみを設定できます。

  • ##ノード関連の知識の詳細については、次のサイトを参照してください。 :

    nodejs チュートリアル

    !

以上がNode の setHeader と writeHead を簡単に比較し、その違いについて説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。