當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js response.writeHead()用法及代碼示例


response.writeHead()(在 v1..0 中添加)屬性是 ‘http’ 模塊的內置屬性,它向請求發送響應標頭。狀態碼是 3 位 HTTP 狀態碼,如 404。最後一個參數 headers 是響應頭。可選地,可以將人類可讀的 statusMessage 作為第二個參數。

當標頭已設置為 response.setHeader() 時,它們將與傳遞給 response.writeHead() 的任何標頭合並,其中傳遞給 response.writeHead() 的標頭優先。如果調用了這個方法並且沒有調用 response.setHeader(),它會直接將提供的 header 值寫入網絡通道而不進行內部緩存,並且 header 上的 response.getHeader() 不會產生預期的結果。如果希望在未來可能檢索和修改標頭的漸進式填充,請改用 response.setHeader()。

為了獲得響應和正確的結果,我們需要導入‘http’模塊。

導入:

const http = require('http');

用法:

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

參數:它接受上麵提到的三個參數,如下所述:

  • statusCode<number>:接受數字類型的狀態碼。
  • statusMessage <string>:它接受任何顯示狀態消息的字符串。
  • headers <Object>:它接受任何函數、數組或字符串。

返回值<http.ServerResponse>:它返回對 ServerResponse 的引用,以便可以鏈接調用。

下麵的示例說明了在 Node.js 中使用 response.writeHead() 屬性。

範例1: 文件名:index.js


// Node.js program to demonstrate the 
// response.writeHead() Method
  
// Importing http module
var http = require('http');
  
// Setting up PORT
const PORT = process.env.PORT || 3000;
  
// Creating http Server
var httpServer = http.createServer(
        function(request, response){
  
  const body = 'hello world';
    
  // Calling response.writeHead method
  response.writeHead(200, {
    'Content-Length':Buffer.byteLength(body),
    'Content-Type':'text/plain'
  });
    
  response.end(body);
});
  
// Listening to http Server
httpServer.listen(PORT, () => {
   console.log("Server is running at port 3000...");
});

輸出:

Output: In-Console

Server is running at port 3000…

現在在瀏覽器中運行http://localhost:3000 /。

Output: In-Browser

hello world

範例2: 文件名:index.js


// Node.js program to demonstrate the 
// response.writeHead() Method
  
// Importing http module
var http = require('http');
  
// Setting up PORT
const PORT = process.env.PORT || 3000;
  
// Creating http Server
var httpServer = http.createServer(
        function(request, response){
  
  // Setting up Headers  
  response.setHeader('Content-Type', 'text/html');
  response.setHeader('Set-Cookie', ['type=ninja', 
  'language=javascript']);
  response.setHeader('X-Foo', 'bar');
  
  // Calling response.writeHead method
  response.writeHead(200, 
     { 'Content-Type':'text/plain' });
  
  // Getting the set Headers
  const headers = response.getHeaders();
    
  // Printing those headers
  console.log(headers);
  
  // Prints Output on the 
  // browser in response
  response.end('ok');
});
  
// Listening to http Server
httpServer.listen(PORT, () => {
   console.log(
"Server is running at port 3000...");
});

使用以下命令運行index.js文件:

node index.js

輸出:

Output:In-Console

Server is running at port 3000…

[Object:null prototype] {

 ‘content-type’:‘text/plain’,

 ‘set-cookie’:[ ‘type=ninja’, ‘language=javascript’ ],

 ‘x-foo’:‘bar’}

現在在瀏覽器中運行http://localhost:3000 /。

Output: In-Browser

ok

Content-Length以字節而不是字符給出。使用 Buffer.byteLength() 確定正文的長度(以字節為單位)。 Node.js 不會檢查 Content-Length 和已傳輸的正文長度是否相等。嘗試設置包含無效字符的標頭字段名稱或值將導致拋出 TypeError。

參考: https://nodejs.org/api/http.html#http_response_writehead_statuscode_statusmessage_headers


相關用法


注:本文由純淨天空篩選整理自vikas_g大神的英文原創作品 Node.js response.writeHead() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。