新建一个文件 server.js,代码如下
// 导入http模块
const http = require('http');
// 定义主机和端口号
const hostname = '127.0.0.1';
const port = 3000;
// 创建HTTP服务器
const server = http.createServer((req, res) => {
// 获得HTTP请求的method和url:
console.log(req.method + ': ' + req.url);
// 将HTTP响应200写入response, 同时设置Content-Type: text/html:
res.writeHead(200, { 'Content-Type': 'text/html' });
// 发送响应
res.end('<h1>Hello, Eric!</h1>');
});
// 启动服务器监听指定的主机和端口
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
要运行这个服务器,您只需将以上代码保存到一个.js
文件中(例如server.js
),然后在终端中运行node server.js
命令。然后,您可以在浏览器中访问http://127.0.0.1:3000/
来查看您的服务器是否正常运行。
讲解
可替代的代码
res.writeHead(200, { 'Content-Type': 'text/html' });
可以用
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
res.setHeader
和 res.writeHead
都是 Node.js HTTP 模块中用于设置 HTTP 响应头的方法,但它们有一些不同之处:
-
res.setHeader
:res.setHeader(name, value)
方法用于设置指定名称的响应头的值。如果已存在具有指定名称的响应头,则该值将被替换为新值。- 该方法可以多次调用来设置不同的响应头。
- 例如:
res.setHeader('Content-Type', 'text/html'); res.setHeader('Cache-Control', 'max-age=3600');
-
res.writeHead
:res.writeHead(statusCode, [reasonPhrase], [headers])
方法用于写入响应头和状态码到响应流中,并且可以在写入响应体之前调用。- 该方法允许您一次性设置状态码、原因短语和响应头,如果指定了响应头,它将覆盖之前通过
res.setHeader
设置的同名响应头。 - 例如:
res.writeHead(200, 'OK', {'Content-Type': 'text/html', 'Cache-Control': 'max-age=3600'});
通常情况下,如果您只需要设置少量的响应头,可以使用 res.setHeader
。但是,如果您需要在一次操作中设置多个响应头以及状态码和原因短语,那么可以使用 res.writeHead
。
在 Node.js 的 res.writeHead
方法中,参数2 reasonPhrase
是可选的,因此您可以选择省略它。如果省略了 reasonPhrase
,则将使用默认的原因短语,与指定的状态码相对应。
例如,如果您只想设置状态码为 200,并使用默认的原因短语 "OK"
,您可以这样调用 writeHead
方法:
res.writeHead(200, {'Content-Type': 'text/html', 'Cache-Control': 'max-age=3600'});
在这个例子中,我们省略了第二个参数 reasonPhrase
,并且状态码为 200 对应的默认原因短语将被使用。
在 Node.js 的 server.listen
方法中,hostname
参数是可选的,如果省略,则服务器将会监听所有可用的网络接口。
如果您省略了 hostname
参数,代码会像这样:
server.listen(port, () => {
console.log(`Server running on port ${port}`);
});
在这个例子中,服务器将监听所有可用的网络接口,而不限制于特定的主机名。这对于大多数情况下都是合适的,特别是在您只需要在本地开发环境中运行服务器时。
当服务器监听所有可用的网络接口时,它将会在所有可用的网络地址上接受连接请求,而不仅限于特定的主机名。这意味着可以通过计算机上的任何网络接口访问服务器,无论是通过本地回环地址(localhost)、本地局域网 IP 地址还是公共 IP 地址。
后台运行Node.js服务器并隐藏终端
要在后台运行Node.js服务器并隐藏终端,您可以使用以下方法之一:
-
使用nohup命令(适用于Unix系统):
nohup node server.js > /dev/null 2>&1 &
这将在后台启动Node.js服务器,并将输出重定向到
/dev/null
,即丢弃所有输出。服务器将在后台运行,而不会在终端上显示任何输出。 -
使用PM2进程管理器: 首先,您需要全局安装PM2:
npm install -g pm2
然后,在您的项目目录下启动服务器:
pm2 start server.js
这将使用PM2在后台启动Node.js服务器,并管理其运行状态。您可以使用
pm2 logs
命令查看日志,使用pm2 stop
命令停止服务器。
这两种方法都允许您在后台运行Node.js服务器,而不会在终端上显示输出。
标签:node,http,res,writeHead,js,响应,服务器,server From: https://www.cnblogs.com/yuyanc/p/18113900