使用 Javascript 创建后端(第 4 部分):创建您的第一个 HTTP 服务器

2025-06-05

使用 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')
})


Enter fullscreen mode Exit fullscreen mode

让我们逐行看看创建服务器的不同步骤

加载 HTTP 模块



const http = require('http')


Enter fullscreen mode Exit fullscreen mode

使用回调函数创建服务器。请注意,传递给该函数有两个参数:req 和 res。

  • req:将包含有关传入请求的信息
  • res:将用于定义传出的响应


const server = http.createServer((req, res) => {
    // send the response
    res.end('Hello World from the server')
})


Enter fullscreen mode Exit fullscreen mode

res.end() 告诉服务器响应已完成,现在可以发送

启动服务器。服务器将等待并读取到达端口 5000 的请求。



server.listen(5000, 'localhost', () => {
    console.log('Server is listening at localhost on port 5000')
})


Enter fullscreen mode Exit fullscreen mode

这是一个无限循环。每次有请求发送到我们服务器的 5000 端口(例如:localhost:5000)时,服务器都会执行回调函数(参见前面的代码块),因此在本例中,服务器会发送“Hello World”响应。

如果您想测试此服务器,请启动应用程序



$ node app.js
Server is listening at localhost on port 5000


Enter fullscreen mode Exit fullscreen mode

打开浏览器并访问 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')
})


Enter fullscreen mode Exit fullscreen mode

HTTP 标头

HTTP 标头允许客户端和服务器随请求或响应传递附加信息。

例如,请求的标头可以包含其内容的格式(如 HTML 或 JSON)和/或用于用户身份验证的相关信息。

响应头示例

为了向响应添加标头,我们需要在 res.end() 函数之前添加一个函数



res.writeHead(404, {
    'Content-type': 'text/html'
})
res.end('<h1>Page not found</h1>')


Enter fullscreen mode Exit fullscreen mode

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
PREV
Laravel:Blade 组件 101
NEXT
在 Windows Financial 支持下像专业人士一样进行开发