从一个 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. 检查三个结果
- 访问
http://127.0.0.1:3000/,看到文本响应。 - 访问
http://127.0.0.1:3000/health,得到 JSON 状态。 - 访问不存在的路径,返回 404,而不是把所有请求都当作成功。
4. 健康检查能说明什么
这个健康检查只说明进程能接收并处理 HTTP 请求。如果应用依赖数据库或外部接口,还需要单独考虑这些依赖的可用性。不要在公开的健康检查响应中输出密码、环境变量或内部配置。
5. 下一步再补什么
真正部署时,还需要考虑错误处理、请求限制、进程重启和 HTTPS。先掌握这个最小闭环,再引入框架和中间件,通常更容易理解它们解决的问题。
学习示例,使用前请结合实际环境验证。