Node http模块学习:聊聊基本用法
时间:2023-02-03 18:32
本篇文章给大家了解一下Node.js http模块,介绍一下createServer和listen方法,希望对大家有所帮助! 使用 Node.js 中创建 Web 服务,主要依赖内置的 创建一个最简单的 Web 服务只需要几行代码。新建一个 然后打开命令行工具,使用 命令行工具中会打印: 之后打开浏览器,访问 http://localhost:3000,就能看到以下内容: 到这里,只需件简简单单的 6 行代码,就创建了一个 web 服务。【相关教程推荐:nodejs视频教程、编程教学】 可以看到,创建 Web 服务的核心方法就是 它接收一个回调函数,回调参数接收两个参数,分别是 : 这个回调函数,就是处理 http 请求,设置 http 响应的主要场所。所以,编写 web 服务,其实就是在不停的在这个函数中处理请求和响应内容。这也是基于 HTTP 协议本身的请求-响应模型所决定的。当然,实际开发中肯定不能这么杂糅的写,都是使用框架,那会有很合理的中间件机制和分层。 我们都知道,TCP 协议是 HTTP 协议的底层协议,所有 HTTP 请求的数据都是利用 TCP 传输的。要发送 HTTP 请求,必须先建立 TCP 连接。 Node 中要创建 HTTP 服务也是如此。 所以通过 它有多种重载,最常用的一种就是监听一个端口,在启动成功后,执行回调函数: 如果服务启动失败,比如出现端口占用时,控制台中会直接报错,就不再执行后面的回调函数了。 再介绍两种其他的重载,使用的并不多。 一种是不指定端口号,此时操作系统会随机分配一个可用的端口号。在服务启动成功后,可以通过 试一下: 一种是指定要监听的主机名。 当不指定 如果设置为 我们介绍了 更多node相关知识,请访问:nodejs 教程! 以上就是Node http模块学习:聊聊基本用法的详细内容,更多请关注gxlsystem.com其它相关文章!http 模块
http
模块。经典的 express.js、koa.js 框架都是以 http
模块为核心,进行的不同程度的封装。index.js
文件,输入以下内容:// 1.导入 http 模块
const http = require('http');
// 2. 调用 createServer 方法创建服务
const server = http.createServer((request, response) => {
// 3.响应给浏览器的内容
response.end('Hello, World');
});
// 4.执行 listen 方法,启动服务
server.listen(3000, () => {
console.log('服务器启动成功:http://localhost:3000')
})
node
命令执行该文件:node index.js
服务器启动成功:http://localhost:3000
createServer 方法
createServer
方法。listen 方法
createServer
方法执行后会创建一个 Server
类的实例,该 Server
类又继承自另一个内置模块 net
中的 Server
类,它身上有一个 listen
方法。下面是相关的类型声明,可以理解这其中的关系。// net 模块
class Server extends EventEmitter {
/**
* 启动服务器监听连接。此 Server 可以是 TCP 或 IPC 服务器,具体取决于它所监听的内容。
*/
// 有若干重载,这是最常使用的一种方法
listen(port?: number, hostname?: string, listeningListener?: () => void): this;
listen(port?: number, listeningListener?: () => void): this;
}
// http 模块
import { Server as NetServer } from 'node:net';
function createServer<
Request extends typeof IncomingMessage = typeof IncomingMessage,
Response extends typeof ServerResponse = typeof ServerResponse,
>(requestListener?: RequestListener<Request, Response>): Server<Request, Response>;
class Server<
Request extends typeof IncomingMessage = typeof IncomingMessage,
Response extends typeof ServerResponse = typeof ServerResponse,
> extends NetServer {}
createServer
方法创建了服务之后,还用再调用 listen
方法,用于启动该服务,监听连接。server.listen(3000, () => {
console.log('服务器启动成功:http://localhost:3000')
})
server.address().port
属性来获得分配的端口号:server.listen(() => {
const port = server.address().port
console.log(port)
console.log('服务器启动成功:http://localhost:', port)
})
host
时,默认为 0.0.0.0
(IPv4)或者 ::
(IPv6),支持网络中所有的主机进行访问。locolhost
或者 127.0.0.1
,则只能自己的主机访问。server.listen(3000, 'localhost', () => {
console.log('服务器启动成功:http://localhost:', port)
})
总结
http
模块的基本用法,主要使用 createServer
来创建服务,再调用 listen
方法来启动服务,监听连接。createServer
接收回调函数用来具体处理某一个请求,编写 web 服务主要就是利用回调函数的两个参数 request
和 response
,后面会详细介绍。