node.js启动http服务

新建一个文件 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 响应头的方法,但它们有一些不同之处:

  1. res.setHeader:

    • res.setHeader(name, value) 方法用于设置指定名称的响应头的值。如果已存在具有指定名称的响应头,则该值将被替换为新值。
    • 该方法可以多次调用来设置不同的响应头。
    • 例如:
      res.setHeader('Content-Type', 'text/html');
      res.setHeader('Cache-Control', 'max-age=3600');
  2. 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服务器并隐藏终端,您可以使用以下方法之一:

  1. 使用nohup命令(适用于Unix系统):

    nohup node server.js > /dev/null 2>&1 &

    这将在后台启动Node.js服务器,并将输出重定向到/dev/null,即丢弃所有输出。服务器将在后台运行,而不会在终端上显示任何输出。

  2. 使用PM2进程管理器: 首先,您需要全局安装PM2:

    npm install -g pm2

    然后,在您的项目目录下启动服务器:

    pm2 start server.js

    这将使用PM2在后台启动Node.js服务器,并管理其运行状态。您可以使用pm2 logs命令查看日志,使用pm2 stop命令停止服务器。

这两种方法都允许您在后台运行Node.js服务器,而不会在终端上显示输出。

posted @   C羽言  阅读(374)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示