HTTP 模块
HTTP 模块是一组功能,允许你创建和管理自己的 Web 服务器。
提醒:什么是 Web 服务器?
Web 服务器是一组硬件和软件,允许访问存储在计算机上的托管文件、网页和数据库。
Web 服务器还包括 HTTP 服务器。HTTP 服务器是一种通过 HTTP 协议( 浏览器用于显示网页的协议)理解/接收 URL 和请求的软件。
从最简单的层面来说,每当浏览器需要托管在 Web 服务器上的文件或其他内容时,浏览器就会向服务器发出请求(称为发送 HTTP 请求)。当请求到达服务器时,HTTP 服务器会对其进行处理并返回响应。
总而言之,底线是,尽管 HTTP 服务器看起来很复杂,但实际上它只是一连串的请求和响应。你将在下面看到 NodeJS 允许你非常轻松地创建 HTTP 服务器,并且读取请求和发送响应非常容易。
使用 NodeJS 创建 HTTP 服务器
以下是创建 HTTP 服务器的示例
1  | const http = require("http");  | 
让我们逐行查看创建服务器的不同步骤
加载 HTTP 模块
1  | const http = require("http");  | 
使用回调函数创建服务器。请注意,传递给该函数的两个参数是:req 和 res。
req:将包含有关传入请求的信息res:将用于定义传出响应
1  | const server = http.createServer((req, res) => {  | 
res.end() 告诉服务器响应已完成,现在可以发送
启动服务器。服务器将等待并读取到达端口 5000 的请求。
1  | server.listen(5000, "localhost", () => {  | 
这是一个无限循环。每次将请求发送到端口 5000 的服务器(例如:localhost:5000)时,服务器都会执行回调(参见前面的代码块),因此在这种情况下会发送响应“来自服务器的 Hello World”
如果你想测试此服务器,请启动应用程序
1  | node app.js  | 
打开浏览器并访问 localhost:5000
浏览器中应显示消息“来自服务器的 Hello World”
事实上,如果你访问任何页面(例如:localhost:5000/about),将始终显示相同的消息。
可以读取请求的 URL 路径(例如:/about 或 /home 等),并根据路径返回不同的响应。
路径信息包含在请求中。
要读取有关请求的信息,我们将使用 req 对象。如你所知,它包含请求的所有信息。
具体来说,URL 路径位于 req.url 属性中
这是一个小型 HTTP 服务器的示例,根据收到的 URL,它会显示不同的页面
1  | const http = require("http");  | 
HTTP 标头
HTTP 标头允许客户端和服务器随请求或响应传递附加信息。
例如,请求的标头可以包含其内容的格式(例如 HTML 或 JSON)和/或用于用户身份验证的相关信息。
响应标头示例
要向响应添加标头,我们需要在 res.end() 函数之前添加一个函数
1  | res.writeHead(404, {  | 
writeHead 函数允许你指定消息的内容类型,可以是“text/html”
运行 res.end() 函数时,NodeJS 会将 Header 包含在响应中。
你的第一个 HTTP 服务器
现在,你已经创建了第一个 HTTP 服务器。虽然目前这是一个非常基本的服务器,但请记住,HTTP 服务器只是一系列请求和响应。
因此,在最简单的形式中,你的 Web 应用程序将执行此操作。也就是说,处理请求并返回响应。
ExpressJS 简介
虽然 NodeJS 允许我们创建自己的 HTTP 服务器,但要创建真正的 Web 应用程序,我们必须编写数百甚至数千行代码来处理所有可能性和所有异常。
幸运的是,有几个 NodeJS 库/框架可以为我们完成这项工作。
最受欢迎的是 ExpressJS。 ExpressJS 是一个使用 NodeJS 设计的框架,旨在大大简化 Web 应用程序开发。
因此我们稍后将详细介绍如何在我们的 NodeJS 应用程序中使用 ExpressJS。
相关文章: