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
相关用法
- Node.js process.nextTick()用法及代码示例
- Node.js GM solarize()用法及代码示例
- Node.js MySQL Max()用法及代码示例
- Lodash _.method()用法及代码示例
- Node.js Http2ServerRequest.method用法及代码示例
- Node.js http.IncomingMessage.method用法及代码示例
- Collect.js toArray()用法及代码示例
- Javascript RegExp toString()用法及代码示例
- Tensorflow.js tf.Sequential.evaluate()用法及代码示例
- Node.js URLSearchParams.has()用法及代码示例
- JavaScript Math cosh()用法及代码示例
- Node.js hmac.update()用法及代码示例
- jQWidgets jqxFormattedInput val()用法及代码示例
- HTML DOM isEqualNode()用法及代码示例
- JavaScript Date toLocaleTimeString()用法及代码示例
- Tensorflow.js tf.Tensor.buffer()用法及代码示例
注:本文由纯净天空筛选整理自vikas_g大神的英文原创作品 Node.js response.writeHead() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。