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
。
相关文章: