持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情
今天来学习Node.js 内置 API 模块的http模块。
http模块
http模块是Node.js官方提供的,用来创建Web服务器的模块。
//引用http模块
const http = require('http');
通过http.createServer()方法,可以将一台普通的电脑变为一台Web服务器,从而对外提供Web资源服务。
web服务器(Web Server),一般指网站服务器,主要功能是提供网上信息浏览服务,通过 HTTP 协议与客户端通信。这个客户端通常指的是 Web 浏览器。
目前最主流的三个Web服务器是Apache、Nginx、Microsoft的Internet信息服务器(Internet Information Services,IIS)。
Web服务器工作原理图(引用网上的一张图片)
一个完整 Web 请求的详细过程:用户在浏览器中输入 URL 地址,然后浏览器如何找到服务器地址的过程,并发起数据请求;请求数据在服务器内部处理过程;最后到请求数据在服务器端处理完成后,浏览器渲染响应页面过程。
Web服务器处理过程: 接收数据 ⇒ HTTP解析 ⇒ 逻辑处理 ⇒ HTTP封包 ⇒ 发送数据
在Node.js中实现一个HTTP服务器(web服务器),像处理TCP连接,解析HTTP等这些工作实际上由Node.js自带的http模块完成。通过操作http模块提供的request对象可以拿到所有HTTP请求的信息;response对象可以把HTTP响应返回给浏览器
创建基本的http服务器,可以查看这篇文章
下面简单实现一个案例:输入不同的url展示不同的页面
const http = require('http');
const port = 8080;
const server = http.createServer((request, response) => {
const url = request.url; // 获取请求的url地址
let content = '<h2>404 Not found!</h2>' // 设置默认的响应内容
if(url === '/' || url === '/index.html'){
content = '<h2>首页</h2>'
}else if(url === '/about.html'){
content = '<h2>关于我们</h2>'
}
//当收到请求时,使用 response.writeHead() 函数发送一个HTTP状态200(表示响应成功)和HTTP头的内容类型(content-type)
response.writeHead(200, {"Content-Type": "text/html;charset=utf-8"});
//调用 response.end() 完成响应,把内容发送给浏览器(客户端)
response.end(content);
})
//设置服务器端口并进行监听
server.listen(port, () => { console.log(`服务器运行在 http://localhost:${port}/`) })
输入http://localhost:8080或者http://localhost:8080/index.html,展示如下页面:
输入http://localhost:8080/about.html,展示如下页面: