学习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('启动');
})
相关推荐
Nan_Shu_6142 分钟前
学习: Threejs (2)
前端·javascript·学习
学历真的很重要40 分钟前
LangChain V1.0 Context Engineering(上下文工程)详细指南
人工智能·后端·学习·语言模型·面试·职场和发展·langchain
码农小韩2 小时前
基于Linux的C++学习——动态数组容器vector
linux·c语言·开发语言·数据结构·c++·单片机·学习
嵌入式-老费2 小时前
外壳3D结构设计(学习的方法)
学习
山土成旧客2 小时前
【Python学习打卡-Day40】从“能跑就行”到“工程标准”:PyTorch训练与测试的规范化写法
pytorch·python·学习
Yyuanyuxin2 小时前
保姆级学习开发安卓手机软件(一)--安装软件及配置
学习
ps酷教程2 小时前
HttpPostRequestDecoder源码浅析
java·http·netty
●VON3 小时前
跨模态暗流:多模态安全攻防全景解析
人工智能·学习·安全·von
星火开发设计3 小时前
C++ map 全面解析与实战指南
java·数据结构·c++·学习·算法·map·知识
副露のmagic3 小时前
更弱智的算法学习 day25
python·学习·算法