学习Node.js中的http模块

这期学习在node.js中内置模块的http模块

目录

一、定义

二、服务器

[IP 地址](#IP 地址)

域名和域名服务器

端口号

三、创建基本的服务器

导入http模块

通过http模块创建一个web服务器实例

http.Server的事件

request

为服务器绑定请求request事件,监听客户端的请求

服务器返回响应

connection

close

启动服务,并且说明端口号

四、实例

1.http实例,用终端运行js文件之后,在浏览器输入127.0.0.1.2020(端口)可以收到服务器端响应的事务

2.根据不同的url打开不同的网页


一、定义

http 模块是Node.js官方提供的、用来创建 web 服务器的模块,通过 http模块提供的 http.createServer()方法,就能方便的把一台普通的电脑,变成一台Web服务器,从而对外提供Web资源服务。

简单来说就是把自己电脑创建成一个 HTTP 服务器,该服务器侦听服务器端口并将响应返回给客户端。

二、服务器

在学习http模块之前,首先我们要了解一下"服务器"

IP 地址

IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异

在我们每台电脑上都存在一个IP地址,这个IP地址是唯一的,而且是能标明电脑内的一串数字。

IP地址的格式通常用"点分十进制"表示成(a.b.c.d)的形式,其中,a,b,c,d都是 0~255 之间的十进制整数。例如:用点分十进表示的iP地址(192.168.1.1)

域名和域名服务器

域名(Domain name)是互联网基础架构的关键部分。它们为互联网上任何可用的 Web 服务器提供了方便人类理解的地址。

DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。

域名其实就是为了方便理解人们发明的有一种字符型的地址方案,而域名服务器就是将域名与唯一性质的IP地址进行联系,域名服务器就是提供 IP地址和域名之间的转换服务的服务器

端口号

所谓的端口,就时客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号

每个web服务都对应一个唯一的端口号,客户端发送过来的网络请求,通过端口号,可以被准确地交给对应的web服务进行处理

三、创建基本的服务器

导入http模块

首先导入http模块,作为node.js的内置模块出现

复制代码
const http = require('http')

通过http模块创建一个web服务器实例

使用createServer()方法创建HTTP服务器,该服务器开始侦听服务器端口并将响应返回给客户端。

在我们的示例中,我将HTTP服务器命名为app

复制代码
const app = http.createServer()

http.Server的事件

http.Server 是一个基于事件的服务器,继承自 EventEmitter。http.Server 提供的事件如下所示:

request

当客户端请求到来时,该事件被触发,提供两个参数req和res,表示请求和响应信息,是最常用的事件。

为服务器绑定请求request事件,监听客户端的请求

request事件语法如下:

复制代码
app.on('事件类型', 回调函数)

例如:

复制代码
app.on('request', (req, res) => {})

其中:只要有客户端来请求我们自己的服务器,就会触发 request 事件,从而调用这个事件处理函数,req是请求对象,里面存储着客户端的请求信息,会返回请求的一些数据,res是响应对象,里面存储着服务器的响应信息

服务器返回响应
复制代码
res.end('')

设置内容格式:当调用res.end()方法,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式

复制代码
res.setHeader('Content-Type', 'text/html;charset=utf-8')

connection

当TCP连接建立时,该事件被触发,提供一个参数socket,是net.Socket的实例。

close

当服务器关闭时,触发事件(注意不是在用户断开连接)

启动服务,并且说明端口号

复制代码
app.listen(端口号,回调函数)

四、实例

1.http实例,用终端运行js文件之后,在浏览器输入127.0.0.1.2020(端口)可以收到服务器端响应的事务

复制代码
// 引入 http 模块
const http = require('http')
// 创建一个 HTTP 服务器实例
const app = http.createServer()
// 监听 request 事件,当有请求到达时执行回调函数
app.on('request', (req, res) => {
    // 打印请求的 URL 和方法
    console.log(`请求地址是${req.url}。请求方式是${req.method}`)
    // 设置响应头,指定内容类型为 HTML,字符编码为 UTF-8
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
    // 向客户端发送响应,内容与请求的 URL 和方法相同
    res.end(`请求地址是${req.url}。请求方式是${req.method}`)
})
// 服务器启动,监听 2020 端口,启动成功后在控制台输出提示信息
app.listen(2020, () => {
    console.log('服务器启动成功了~')
})

2.根据不同的url打开不同的网页

复制代码
// 引入 http 模块
const http = require('http')
// 创建一个 HTTP 服务器实例
const app = http.createServer()
// 监听 request 事件,当有请求到达时执行回调函数
app.on('request', (req, res) => {
    // 设置响应头,指定内容类型为 HTML,字符编码为 UTF-8
    res.setHeader('content-type', 'text/html;charset=utf-8')
    // 根据请求的 URL 发送不同的响应内容
    if (req.url === '/' || req.url === '/index') {
        // 如果请求的是根路径或 /index,发送 '首页' 作为响应
        res.end('首页')
    } else if (req.url === '/about') {
        // 如果请求的是 /about,发送 '关于我们' 作为响应
        res.end('关于我们')
    } else {
        // 如果请求的是其他路径,发送 '404 页面跑丢了' 作为响应
        res.end('404 页面跑丢了')
    }
})
// 服务器启动,监听 3030 端口,启动成功后在控制台输出提示信息
app.listen(3030, () => {
    console.log('启动');
})
相关推荐
Moonnnn.6 分钟前
【单片机期末】单片机系统设计
笔记·单片机·嵌入式硬件·学习
行云流水剑2 小时前
【学习记录】使用 Kali Linux 与 Hashcat 进行 WiFi 安全分析:合法的安全测试指南
linux·学习·安全
门前云梦5 小时前
《C语言·源初法典》---C语言基础(上)
c语言·开发语言·学习
漂流瓶jz5 小时前
让数据"流动"起来!Node.js实现流式渲染/流式传输与背后的HTTP原理
前端·javascript·node.js
0x7CF5 小时前
QT3D学习笔记——圆台、圆锥
qt·学习·3d
qq_386322696 小时前
华为网路设备学习-24(路由器OSPF - 特性专题)
学习·华为·智能路由器
viperrrrrrrrrr76 小时前
大数据学习(132)-HIve数据分析
大数据·hive·学习
2501_915106327 小时前
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
websocket·网络协议·tcp/ip·http·网络安全·https·udp
陪我一起学编程7 小时前
关于nvm与node.js
vue.js·后端·npm·node.js
程序猿小D7 小时前
第22节 Node.js JXcore 打包
开发语言·人工智能·vscode·node.js·c#