在Node.js中,HTTP状态码是用于表示HTTP响应状态的3位数字代码。理解这些状态码对于调试和优化应用程序非常重要。以下是一些常见的HTTP状态码及其含义:
1. 信息响应(Informational Responses)
- 100 Continue:表示客户端应当继续发送请求的剩余部分。
- 101 Switching Protocols:服务器正在切换协议。
2. 成功(Successful)
- 200 OK:请求已成功处理,请求所希望的响应头或数据体将随此响应返回。
- 201 Created:请求已经被实现,并且有一个新的资源已经依据请求的需要而创建。
- 202 Accepted:请求已被接受处理,但未完成。
- 204 No Content:请求已成功处理,但没有内容需要返回。
3. 重定向(Redirection)
- 301 Moved Permanently:永久重定向。被请求的资源已永久移动到新的URI。
- 302 Found(原始描述短语为Moved Temporarily):临时重定向。请求的资源现在临时位于由Location头指定的URL上。
- 304 Not Modified:如果客户端发送了一个带条件的GET请求且该请求已被允许,而文档的内容(自上次访问以来)并没有改变,则服务器应当返回这个状态码。
4. 客户端错误(Client Error)
- 400 Bad Request:服务器无法理解或拒绝执行客户端的请求。
- 401 Unauthorized:要求用户的身份认证。
- 403 Forbidden:服务器理解请求,但是拒绝执行它。
- 404 Not Found:服务器无法找到请求的资源。
- 405 Method Not Allowed:请求中指定的方法不被允许。
5. 服务器错误(Server Error)
- 500 Internal Server Error:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
- 501 Not Implemented:服务器不支持当前请求所需要的某个功能。
- 502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
- 503 Service Unavailable:由于临时的服务器维护或者过载,服务器当前无法处理请求。
- 504 Gateway Timeout:作为网关或者代理工作的服务器在等待从上游服务器接收响应时超时。
在Node.js应用中,你可以使用内置的http模块来创建服务器,并通过response.writeHead(statuscode, [headers])方法发送HTTP状态码。例如:
const http = require('http'); const server = http.createServer((req, res) => { if (req.url === '/') { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello, World!'); } else { res.writeHead(404, { 'Content-Type': 'text/plain' }); res.end('Not Found'); } }); server.listen(3000);
通过理解这些HTTP状态码,你可以更有效地解读Node.js日志中的HTTP响应信息,从而快速定位和解决问题。