使用 Javascript 创建后端(第 4 部分):创建您的第一个 HTTP 服务器
这里有一系列文章可以帮助您使用 Javascript 创建后端应用程序。
Node.js 现在是必需的,因此开发人员掌握它是必不可少的。
我将每两天发布一篇新文章,逐渐地您将了解有关 Node.js 的所有知识。
为了不错过任何内容,请在 Twitter 上关注我:https://twitter.com/EricTheCoder_
HTTP 模块
HTTP 模块是一组允许您创建和管理自己的 Web 服务器的函数。
提醒:什么是 Web 服务器?
网络服务器是一组硬件和软件,允许访问计算机上存储的托管文件、网页和数据库。
Web 服务器还包含一个 HTTP 服务器。HTTP 服务器是一种通过 HTTP 协议(浏览器用于显示网页的协议)理解/接收 URL 和请求的软件。
最简单的情况是,每当浏览器需要托管在 Web 服务器上的文件或其他内容时,浏览器就会向服务器发出请求(称为发送 HTTP 请求)。当请求到达服务器时,HTTP 服务器会对其进行处理并返回响应。
总而言之,HTTP 服务器看似复杂,但实际上它只是一连串的请求和响应。下文将介绍 NodeJS 可以让你轻松创建 HTTP 服务器,读取请求和发送响应也非常简单。
使用 NodeJS 创建 HTTP 服务器
以下是创建 HTTP 服务器的示例
const http = require('http')
const server = http.createServer((req, res) => {
// Send response
res.end('Hello World from the server')
})
server.listen(5000, 'localhost', () => {
console.log('Server is listening at localhost on port 5000')
})
让我们逐行看看创建服务器的不同步骤
加载 HTTP 模块
const http = require('http')
使用回调函数创建服务器。请注意,传递给该函数有两个参数:req 和 res。
- req:将包含有关传入请求的信息
- res:将用于定义传出的响应
const server = http.createServer((req, res) => {
// send the response
res.end('Hello World from the server')
})
res.end() 告诉服务器响应已完成,现在可以发送
启动服务器。服务器将等待并读取到达端口 5000 的请求。
server.listen(5000, 'localhost', () => {
console.log('Server is listening at localhost on port 5000')
})
这是一个无限循环。每次有请求发送到我们服务器的 5000 端口(例如:localhost:5000)时,服务器都会执行回调函数(参见前面的代码块),因此在本例中,服务器会发送“Hello World”响应。
如果您想测试此服务器,请启动应用程序
$ node app.js
Server is listening at localhost on port 5000
打开浏览器并访问 localhost:5000
您的浏览器中应显示消息“来自服务器的 Hello World”
事实上,如果您访问任何页面,例如:localhost:5000/about,将始终显示相同的消息。
可以读取请求的 url 路径,例如:/about 或 /home 等,并根据路径返回不同的响应。
路径信息包含在请求中。
要读取有关请求的信息,我们将使用“req”对象。如您所知,它包含请求的所有信息。
具体来说,url 路径位于 'req.url' 属性中
这是一个小型 HTTP 服务器的示例,它根据收到的 URL 显示不同的页面
const http = require('http')
const server = http.createServer((req, res) => {
if (req.url === '/') {
res.end('<h1>Home page</h1>')
} else if (req.url === '/about') {
res.end('<h1>About page</h1>')
} else {
res.end('page not found')
}
})
server.listen(5000, 'localhost', () => {
console.log('Server is listening at localhost on port 5000')
})
HTTP 标头
HTTP 标头允许客户端和服务器随请求或响应传递附加信息。
例如,请求的标头可以包含其内容的格式(如 HTML 或 JSON)和/或用于用户身份验证的相关信息。
响应头示例
为了向响应添加标头,我们需要在 res.end() 函数之前添加一个函数
res.writeHead(404, {
'Content-type': 'text/html'
})
res.end('<h1>Page not found</h1>')
writeHead 函数允许您指定消息的内容类型,可以是“text/html”
运行 res.end() 函数时,NodeJS 会将 Header 包含在响应中。
您的第一个 HTTP 服务器
瞧,你已经创建了你的第一个 HTTP 服务器。虽然目前这只是一个非常基础的服务器,但请记住,HTTP 服务器只是一系列的请求和响应而已。
所以,最简单的情况下,你的 Web 应用程序就是这样做的。也就是说,处理请求并返回响应。
ExpressJS 简介
尽管 NodeJS 允许我们创建自己的 HTTP 服务器,但要创建真正的 Web 应用程序,我们必须编写数百甚至数千行代码来处理所有可能性和所有异常。
幸运的是,有几个 NodeJS 库/框架可以为我们完成这项工作。
其中最受欢迎的是 ExpressJS。ExpressJS 是一个使用 NodeJS 设计的框架(一组库),旨在大大简化 Web 应用程序的开发。
因此我们稍后将详细了解如何在我们的 NodeJS 应用程序中使用 ExpressJS。
结论
今天就到这里,请在推特上关注我:https://twitter.com/EricTheCoder_以便收到下一篇文章发布的通知(两天内)。
文章来源:https://dev.to/ericchapman/create-a-backend-in-javascript-part-4-create-your-first-http-server-5k1