开发实践笔记
← 全部笔记
Node.js

从一个 HTTP 服务开始理解 Node.js

先不引入框架,用一个小服务理解浏览器发送请求之后,应用需要完成哪些工作。

1. 请求和响应

浏览器访问一个地址时,会发送包含请求方法、路径和请求头的 HTTP 请求。服务端接收请求后,返回状态码、响应头和响应正文。页面、JSON 数据和图片,本质上都是不同形式的响应内容。

2. 一个可运行的最小示例

把下面的代码保存为 server.mjs,在安装了 Node.js 的本机运行 node server.mjs。示例只监听本机地址,不直接开放到公网。

import { createServer } from 'node:http';

const server = createServer((req, res) => {
  const path = new URL(req.url, 'http://localhost').pathname;

  if (req.method !== 'GET') {
    res.writeHead(405, { Allow: 'GET' });
    res.end();
    return;
  }

  if (path === '/health') {
    res.writeHead(200, {
      'Content-Type': 'application/json; charset=utf-8'
    });
    res.end(JSON.stringify({ status: 'ok' }));
    return;
  }

  res.writeHead(path === '/' ? 200 : 404, {
    'Content-Type': 'text/plain; charset=utf-8'
  });
  res.end(path === '/' ? '你好,Node.js' : '页面不存在');
});

server.listen(3000, '127.0.0.1', () => {
  console.log('Listening on http://127.0.0.1:3000');
});

3. 检查三个结果

4. 健康检查能说明什么

这个健康检查只说明进程能接收并处理 HTTP 请求。如果应用依赖数据库或外部接口,还需要单独考虑这些依赖的可用性。不要在公开的健康检查响应中输出密码、环境变量或内部配置。

5. 下一步再补什么

真正部署时,还需要考虑错误处理、请求限制、进程重启和 HTTPS。先掌握这个最小闭环,再引入框架和中间件,通常更容易理解它们解决的问题。

学习示例,使用前请结合实际环境验证。

继续阅读:域名、Nginx 与应用端口