Node.js 能够显示所有的HTTP状态码吗
NodeJS 是一个运行时环境,用于在浏览器外部运行Javascript。它被广泛用于构建后端服务器,与前端如网站、移动应用程序等进行交互。在本文中,我们将检查能否在NodeJS中打印出所有的HTTP状态码。
为了理解这个问题,首先我们需要了解什么是HTTP状态码。
HTTP状态码: 这里我们指的是响应状态码。这些码告诉我们一个HTTP请求是否成功完成。让我们来看看这些码的五个类别:
- 信息性响应: 码为100至199
- 成功响应: 码为200至299
- 重定向消息: 码为300至399
- 客户端错误响应: 码为400至499
- 服务器错误响应: 码为500至599
以上的最简单示例是状态码404,表示“页面未找到”。这是一个非常常见的错误响应,大多数人应该都遇到过。
现在回到我们的问题上,我们能够在NodeJS中打印出以上所有的HTTP状态码吗? 答案是否。NodeJS不提供打印所有以上状态码的工具。 但是我们仍然可以打印出很多状态码。让我们来看看它们。
打开命令提示符或shell,并输入以下命令:
node
您应该看到以下输出,表示您现在在节点环境中。
Welcome to Node.js v16.14.0.
Type ".help" for more information.
>
现在,我们输入命令:
http.STATUS_CODES
控制台输出:
{
'100': 'Continue',
'101': 'Switching Protocols',
'102': 'Processing',
'103': 'Early Hints',
'200': 'OK',
'201': 'Created',
'202': 'Accepted',
'203': 'Non-Authoritative Information',
'204': 'No Content',
...
'505': 'HTTP Version Not Supported',
'506': 'Variant Also Negotiates',
'507': 'Insufficient Storage',
'508': 'Loop Detected',
'509': 'Bandwidth Limit Exceeded',
'510': 'Not Extended',
'511': 'Network Authentication Required'
}
正如您所能看到的,我们没有所有的清单,但仍然有很多HTTP状态码。让我们通过一个示例来了解 200 状态码的使用情况。
项目结构:
我们需要在本教程中使用Express(一种Node.js的Web框架)。因此,在同一目录下,打开命令提示符并输入以下命令:
npm install express
在下面的示例中,我们在端口5000上运行我们的服务器,并使用express.js处理get请求。如果请求成功完成,状态代码将发送给客户端,并在服务器端打印响应状态。
index.js
const express = require('express');
const app = express();
const port = 5000;
app.get('/', (req, res) => {
res.status(200).send('Status code of 200!');
console.log(res.status(200));
})
app.listen(port, () => {
console.log(`Server is running at the port: ${port}`);
})
现在打开命令提示符并输入:
node index.js
服务器正在运行中:
现在,打开你的浏览器,然后在URL中输入: http://localhost:5000/ 。你的浏览器将显示一个网页,上面显示 ‘Status code of 200!’ 。
但这还不是全部。现在看看你的命令提示符。你会看到很多东西。不用担心,只需向下滚动到输出的末尾,你会看到类似这样的内容 –