插件窝 干货文章 Node.js日志中的HTTP状态码代表什么

Node.js日志中的HTTP状态码代表什么

错误 请求 服务器 javascript 912    来源:    2025-05-06

在Node.js应用中,HTTP状态码是服务器响应HTTP请求时返回的三位数字代码,用于表示请求的处理结果。以下是常见状态码的分类和含义,结合Node.js场景的说明:


1xx (信息类)

  • 100 Continue
    服务器已收到请求头,客户端应继续发送请求体(用于大文件上传等场景)。
  • 101 Switching Protocols
    服务器同意升级协议(如从HTTP切换到WebSocket)。

2xx (成功类)

  • 200 OK
    请求成功(默认状态码,常见于GET/POST请求)。
  • 201 Created
    资源创建成功(如REST API成功创建新用户)。
  • 204 No Content
    请求成功但无返回内容(如DELETE请求)。

Node.js示例:

res.status(201).json({ id: 123 }); // 201 Created

3xx (重定向类)

  • 301 Moved Permanently
    资源永久重定向(需更新书签)。
  • 302 Found
    资源临时重定向(如登录后跳转)。
  • 304 Not Modified
    资源未修改(客户端缓存有效)。

Node.js示例:

res.redirect(301, 'https://new-url.com'); // 301重定向

4xx (客户端错误)

  • 400 Bad Request
    请求语法错误(如参数缺失或格式错误)。
  • 401 Unauthorized
    未认证(需提供有效凭证)。
  • 403 Forbidden
    服务器拒绝访问(权限不足)。
  • 404 Not Found
    资源不存在(路由或文件未找到)。
  • 429 Too Many Requests
    请求频率过高(限流场景)。

Node.js示例:

res.status(404).send('Not Found'); // 404错误

5xx (服务器错误)

  • 500 Internal Server Error
    服务器内部错误(如未捕获的异常)。
  • 502 Bad Gateway
    代理服务器从上游收到无效响应。
  • 503 Service Unavailable
    服务不可用(如服务器维护或过载)。
  • 504 Gateway Timeout
    代理服务器等待上游响应超时。

Node.js示例:

app.use((err, req, res, next) => {
  res.status(500).send('Server Error'); // 500错误处理
});

Node.js调试建议

  1. 日志记录
    使用morganwinston等中间件记录状态码:

    const morgan = require('morgan');
    app.use(morgan('dev')); // 输出日志如 "GET / 200 12ms"
    
  2. 错误处理中间件
    统一处理4xx/5xx错误:

    app.use((req, res) => {
     res.status(404).render('404-page');
    });
    
  3. API设计规范
    RESTful API应返回明确的状态码和JSON响应:

    res.status(400).json({ error: 'Invalid input' });
    

常见问题排查

  • 500错误:检查未处理的Promise rejection或同步错误。
  • 404错误:确认路由路径是否正确(如app.get('/path', handler))。
  • 429错误:检查是否触发了限流中间件(如express-rate-limit)。

通过状态码可以快速定位问题,结合Node.js的调试工具(如node-inspect)进一步分析。