Node http模块基本使用方法是什么(http,node,web开发)

时间:2024-05-03 19:01:59 作者 : 石家庄SEO 分类 : web开发
  • TAG :

http 模块

使用 Node.js 中创建 Web 服务,主要依赖内置的 http 模块。经典的 express.js、koa.js 框架都是以 http 模块为核心,进行的不同程度的封装。

创建一个最简单的 Web 服务只需要几行代码。新建一个 index.js 文件,输入以下内容:

//1.导入http模块consthttp=require('http');//2.调用createServer方法创建服务constserver=http.createServer((request,response)=>{//3.响应给浏览器的内容 response.end('Hello,World');});//4.执行listen方法,启动服务server.listen(3000,()=>{console.log('服务器启动成功:http://localhost:3000')})

然后打开命令行工具,使用 node 命令执行该文件:

nodeindex.js

命令行工具中会打印:

服务器启动成功:http://localhost:3000

之后打开浏览器,访问 http://localhost:3000,就能看到以下内容:

Node http模块基本使用方法是什么

到这里,只需件简简单单的 6 行代码,就创建了一个 web 服务。

createServer 方法

可以看到,创建 Web 服务的核心方法就是 createServer 方法。

它接收一个回调函数,回调参数接收两个参数,分别是 :

  • request 对象:表示 HTTP 请求对象,里面包含了客户端本次请求携带的信息

  • response 对象:表示 HTTP 响应对象,用于向客户端设置响应的信息

这个回调函数,就是处理 http 请求,设置 http 响应的主要场所。所以,编写 web 服务,其实就是在不停的在这个函数中处理请求和响应内容。这也是基于 HTTP 协议本身的请求-响应模型所决定的。当然,实际开发中肯定不能这么杂糅的写,都是使用框架,那会有很合理的中间件机制和分层。

listen 方法

我们都知道,TCP 协议是 HTTP 协议的底层协议,所有 HTTP 请求的数据都是利用 TCP 传输的。要发送 HTTP 请求,必须先建立 TCP 连接

Node 中要创建 HTTP 服务也是如此。createServer 方法执行后会创建一个 Server 类的实例,该 Server 类又继承自另一个内置模块 net 中的 Server 类,它身上有一个 listen 方法。下面是相关的类型声明,可以理解这其中的关系。

//net模块classServerextendsEventEmitter{/***启动服务器监听连接。此Server可以是TCP或IPC服务器,具体取决于它所监听的内容。*///有若干重载,这是最常使用的一种方法listen(port?:number,hostname?:string,listeningListener?:()=>void):this;listen(port?:number,listeningListener?:()=>void):this;}//http模块import{ServerasNetServer}from'node:net';functioncreateServer<RequestextendstypeofIncomingMessage=typeofIncomingMessage,ResponseextendstypeofServerResponse=typeofServerResponse,>(requestListener?:RequestListener<Request,Response>):Server<Request,Response>;classServer<RequestextendstypeofIncomingMessage=typeofIncomingMessage,ResponseextendstypeofServerResponse=typeofServerResponse,>extendsNetServer{}

所以通过 createServer 方法创建了服务之后,还用再调用 listen 方法,用于启动该服务,监听连接

它有多种重载,最常用的一种就是监听一个端口,在启动成功后,执行回调函数:

server.listen(3000,()=>{console.log('服务器启动成功:http://localhost:3000')})

如果服务启动失败,比如出现端口占用时,控制台中会直接报错,就不再执行后面的回调函数了。

再介绍两种其他的重载,使用的并不多。

一种是不指定端口号,此时操作系统会随机分配一个可用的端口号。在服务启动成功后,可以通过 server.address().port 属性来获得分配的端口号:

server.listen(()=>{constport=server.address().portconsole.log(port)console.log('服务器启动成功:http://localhost:',port)})

试一下:

Node http模块基本使用方法是什么

一种是指定要监听的主机名

当不指定 host 时,默认为 0.0.0.0(IPv4)或者 ::(IPv6),支持网络中所有的主机进行访问

如果设置为 locolhost 或者 127.0.0.1,则只能自己的主机访问。

server.listen(3000,'localhost',()=>{console.log('服务器启动成功:http://localhost:',port)})

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Node http模块基本使用方法是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:javascript中文乱码如何解决下一篇:

5 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18