文章目录
- 前言
- 一、客户端与服务器是什么
- 二、http模块的使用
- 2.1 导入http模块
- 2.2 创建web服务器
- 服务器的相关概念
- 创建最基本的web服务器
- req对象
- 解决发送中文乱码
- 根据不同的url 响应不同的 html内容
- 总结
前言
Node.js 提供了一个强大的内置模块——http 模块,用于创建 HTTP 服务器和客户端。HTTP 是一种基于请求和响应的协议,而 http 模块让 Node.js 能够轻松地处理 HTTP 流量。无论是构建 Web 服务器、RESTful API 还是进行 HTTP 客户端请求,http 模块都是 Node.js 中的重要组成部分。
在这篇文章中,我们将深入了解如何使用 http 模块构建简单的 HTTP 服务器,以及如何处理客户端请求和发送响应。通过学习 http 模块的基础使用,你将能够开始构建自己的 Web 应用程序,处理用户请求并提供相应的服务。
一、客户端与服务器是什么
客户端:
客户端就像是你坐在餐馆里的顾客。当你想要点餐时,你会看一看菜单(这就是你在浏览器中输入网址的过程),然后你通过服务员(这就是互联网)把你的点餐信息传递给厨房(服务器)。在这个过程中,你是“请求”的发起者,因为你请求服务员把你的点餐信息送到厨房。
服务器:
服务器就像是餐馆里的厨房。一旦服务员把你的点餐信息传递给厨房,厨房就开始准备你所点的菜品。服务器的工作就是根据客户端的请求(点餐信息)提供相应的服务。一旦厨房完成了准备工作,服务员就会把美味的菜品端到你面前,这就是服务器把数据(网页、图片等)发送回客户端的过程。
总体来说,客户端和服务器之间的关系就像你和餐馆之间的互动一样。你提出请求,服务员把请求传递给厨房,厨房准备好了就把服务送回给你。这种互动构成了互联网上信息传递的基本模型。
二、http模块的使用
2.1 导入http模块
和之前一样,使用require函数导入即可
const http = require('http')
2.2 创建web服务器
服务器的相关概念
IP 地址:
IP 地址就像是房子的门牌号一样,它是一串数字,用来标识网络上的一台设备,比如电脑、手机或服务器。每台设备都有一个唯一的 IP 地址,通过这个地址,其他设备可以找到它并与之通信。
域名:
域名就像是房子的别名,它是一个易于记忆的字符串,用来代替 IP 地址。比如,网站的域名可以是 example.com。当我们在浏览器中输入一个域名时,浏览器会通过域名服务器(DNS)将域名解析为相应的 IP 地址,然后连接到该 IP 地址对应的服务器上获取网页内容。
域名服务器(DNS):
域名服务器就像是电话簿一样,它存储了域名和相应的 IP 地址之间的对应关系。当我们输入一个域名时,浏览器会向域名服务器发送请求,询问该域名对应的 IP 地址是什么。域名服务器会返回相应的 IP 地址,使得浏览器可以连接到相应的服务器上获取网页内容。
端口号:
端口号就像是房子的门上的不同编号,它是一个数字,用来标识一个正在运行的网络应用程序。在一台服务器上,可能同时运行着多个不同的网络应用程序,每个应用程序都会使用不同的端口号来区分它们。比如,Web 服务器通常使用端口号 80 或 443。
总之,IP 地址用来标识设备,域名用来代替 IP 地址方便记忆,域名服务器负责将域名解析为 IP 地址,而端口号则用来标识正在运行的网络应用程序。这些术语共同构成了互联网上数据传输的基础。
创建最基本的web服务器
1.创建web 服务器的基本步骤
导入http 模块
创建web 服务器实例
为服务器实例绑定 request 事件,监听客户端的请求
创建服务器语法:
const server = http.createServer()
绑定服务器语法
server.on('request', (req, res) => {
console.log('有客户端连接了');
})
只要有客户端来请求我们自己的服务器,就会触发 request 事件,从而调用这个事件处理函数
启动服务器:
server.listen(3000,()=>{
console.log('http server running at http://localhost:3000');
})
总体代码:
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
console.log('有客户端连接了');
})
server.listen(3000,()=>{
console.log('http server running at http://localhost:3000');
})
打开浏览器输入这个地址即可访问服务器
req对象
req 是请求对象,它包含了与客户端相关的数据和属性
req.urI 是客户端请求的 URL 地址
req.method 是客户端的 method 请求类型
使用req的end方法:向客户端发送指定的内容,并结束这次请求的处理过程
req.end(sendTostr)
解决发送中文乱码
为了防止中文显示乱码的问题,需要设置响应头 Content-Type 的值为 text/html
charset=utf-8
res.setHeader('Content-Type', 'text/html; charset=utf-8')
根据不同的url 响应不同的 html内容
方案:通过获取req的url属性,然后去判断即可
总结
通过本文的介绍,我们深入了解了 Node.js 中的 http 模块。首先,我们了解了如何创建一个简单的 HTTP 服务器,通过监听特定端口并处理客户端请求。随后,我们学习了如何获取和解析请求的 URL,以及如何处理不同的 HTTP 请求方法(GET、POST 等)。
我们还研究了如何设置 HTTP 响应头和主体,向客户端发送适当的响应。通过这些步骤,我们能够构建一个基本的 HTTP 服务器,为客户端提供所需的信息。
总体而言,http 模块为 Node.js 提供了一个强大的工具,使开发者能够轻松构建网络应用。深入了解和熟练运用 http 模块将为你的 Node.js 开发之旅打下坚实的基础。在构建 Web 服务器、RESTful API 或处理 HTTP 客户端请求时,http 模块是不可或缺的利器,为 Node.js 提供了强大的网络处理能力。