http.createServer([options][, requestListener])


  • options <Object>
    • connectionsCheckingInterval:设置以毫秒为单位的时间间隔,用于检查不完整请求中的请求和头部超时。 默认值: 30000
    • headersTimeout:设置从客户端接收完整 HTTP 头部的超时时间,单位为毫秒。更多信息请参见 server.headersTimeout默认值: 60000
    • highWaterMark <number> 可选择覆盖所有 socketreadableHighWaterMarkwritableHighWaterMark。这会影响 IncomingMessageServerResponsehighWaterMark 属性。默认值: 参见 stream.getDefaultHighWaterMark()
    • insecureHTTPParser <boolean> 如果设置为 true,将使用启用宽松标志的 HTTP 解析器。应尽量避免使用不安全的解析器。更多信息请参见 --insecure-http-parser默认值: false
    • IncomingMessage <http.IncomingMessage> 指定要使用的 IncomingMessage 类。对于扩展原始的 IncomingMessage 非常有用。默认值: IncomingMessage.
    • joinDuplicateHeaders <boolean> 如果设置为 true,此选项允许将请求中多个头的字段行值使用逗号(, )连接,而不是丢弃重复项。有关更多信息,请参阅 message.headers默认值: false
    • 'keepAlive' <boolean> 如果设置为“true”,则在接收到新入连接后立即启用该套接字的保持活功能,类似于['socket.setKeepAlive([enable][, initialDelay])']['socket.setKeepAlive(enable, initialDelay)']。 默认: 'false'。
    • keepAliveInitialDelay <number> 如果设置为正数,它会设置在空闲套接字上发送第一个保活探测之前的初始延迟。 默认值: 0
    • keepAliveTimeout:服务器在完成最后一次响应写入后,需要等待额外传入数据的空闲时间(以毫秒为单位),超时后连接将被关闭。有关更多信息,请参阅 server.keepAliveTimeout默认值: 5000
    • maxHeaderSize <number> 可选择覆盖此服务器接收请求时 --max-http-header-size 的值,即请求头的最大长度(以字节为单位)。默认值: 16384(16 KiB)。
    • noDelay <boolean> 如果设置为 true,在收到新的传入连接后会立即禁用 Nagle 算法。默认值: true
    • requestTimeout:设置从客户端接收整个请求的超时时间,单位为毫秒。更多信息请参见 server.requestTimeout默认值: 300000
    • requireHostHeader <boolean> 如果设置为 true,它会强制服务器对任何缺少 Host 头的 HTTP/1.1 请求消息返回 400(错误请求)状态码(如规范所规定)。 默认值: true
    • ServerResponse <http.ServerResponse> 指定要使用的 ServerResponse 类。对于扩展原始的 ServerResponse 非常有用。默认值: ServerResponse
    • shouldUpgradeCallback(request) <Function> 一个回调函数,它接收传入的请求并返回一个布尔值,用于控制应接受哪些升级尝试。被接受的升级将触发 'upgrade' 事件(如果没有注册监听器,其套接字将被销毁),而被拒绝的升级将像任何非升级请求一样触发 'request' 事件。此选项默认值为 () => server.listenerCount('upgrade') > 0
    • uniqueHeaders <Array> 一份只应发送一次的响应头列表。如果头的值是数组,数组项将使用 ; 连接。
    • rejectNonStandardBodyWrites <boolean> 如果设置为 true,在向没有正文的 HTTP 响应写入内容时将抛出错误。 默认值: false
    • optimizeEmptyRequests <boolean> 如果设置为 true,没有 Content-LengthTransfer-Encoding 头(表示没有请求体)的请求将会使用已结束的请求体流进行初始化,因此它们永远不会触发任何流事件(如 'data''end')。你可以使用 req.readableEnded 来检测这种情况。默认值: false
  • requestListener <Function>
  • 返回值:<http.Server>

返回一个新的 http.Server 实例。

🌐 Returns a new instance of http.Server.

requestListener 是一个函数,会自动添加到 'request' 事件中。

🌐 The requestListener is a function which is automatically added to the 'request' event.

import http from 'node:http';

// Create a local server to receive data from
const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'application/json' });
  res.end(JSON.stringify({
    data: 'Hello World!',
  }));
});

server.listen(8000);const http = require('node:http');

// Create a local server to receive data from
const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'application/json' });
  res.end(JSON.stringify({
    data: 'Hello World!',
  }));
});

server.listen(8000);
import http from 'node:http';

// Create a local server to receive data from
const server = http.createServer();

// Listen to the request event
server.on('request', (request, res) => {
  res.writeHead(200, { 'Content-Type': 'application/json' });
  res.end(JSON.stringify({
    data: 'Hello World!',
  }));
});

server.listen(8000);const http = require('node:http');

// Create a local server to receive data from
const server = http.createServer();

// Listen to the request event
server.on('request', (request, res) => {
  res.writeHead(200, { 'Content-Type': 'application/json' });
  res.end(JSON.stringify({
    data: 'Hello World!',
  }));
});

server.listen(8000);