>  기사  >  웹 프론트엔드  >  Node http 모듈 학습: 기본 사용법에 대해 이야기

Node http 모듈 학습: 기본 사용법에 대해 이야기

青灯夜游
青灯夜游앞으로
2023-02-03 18:32:482251검색

이 기사에서는 Node.js http 모듈을 소개하고 createServer 및 Listen 메소드를 소개하겠습니다.

Node http 모듈 학습: 기본 사용법에 대해 이야기

http 모듈

Node.js를 사용하여 주로 내장된 http 모듈에 의존하는 웹 서비스를 만듭니다. 클래식 express.js 및 koa.js 프레임워크는 모두 http 모듈을 핵심으로 하여 다양한 수준으로 캡슐화됩니다. http 模块。经典的 express.js、koa.js 框架都是以 http 模块为核心,进行的不同程度的封装。

创建一个最简单的 Web 服务只需要几行代码。新建一个 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

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

Node http 모듈 학습: 기본 사용법에 대해 이야기

到这里,只需件简简单单的 6 行代码,就创建了一个 web 服务。【相关教程推荐:nodejs视频教程编程教学

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 模块

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(&#39;服务器启动成功:http://localhost:3000&#39;)
})

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

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

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

server.listen(() => {
    const port = server.address().port
    console.log(port)
    console.log(&#39;服务器启动成功:http://localhost:&#39;, port)
})

试一下:

Node http 모듈 학습: 기본 사용법에 대해 이야기

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

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

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

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

总结

我们介绍了 http 模块的基本用法,主要使用 createServer 来创建服务,再调用 listen 方法来启动服务,监听连接。createServer 接收回调函数用来具体处理某一个请求,编写 web 服务主要就是利用回调函数的两个参数 requestresponse

가장 간단한 웹 서비스를 만드는 데는 몇 줄의 코드만 있으면 됩니다. 새 index.js 파일을 생성하고 다음 내용을 입력합니다:

rrreee 그런 다음 명령줄 도구를 열고 node 명령을 사용하여 파일을 실행합니다: rrreee

The 명령줄 도구는 :🎜rrreee🎜브라우저를 열고 http://localhost:3000을 방문하면 다음 내용을 볼 수 있습니다:🎜🎜Node http 모듈 학습: 기본 사용법에 대해 이야기🎜🎜이 시점에서 단 6줄의 코드만으로 웹 서비스가 생성됩니다. [권장 관련 튜토리얼: nodejs 동영상 튜토리얼🎜, 프로그래밍 교육🎜]🎜

createServer 메소드

🎜 보시다시피 Web 서비스의 핵심 메소드는 createServer 메소드입니다. 🎜🎜콜백 함수를 수신하고 콜백 매개변수는 다음과 같은 두 개의 매개변수를 수신합니다. 🎜
  • 요청 객체: 이 요청에서 클라이언트가 전달하는 정보를 포함하는 HTTP 요청 객체를 나타냅니다
  • 응답 개체: 클라이언트에 응답 정보를 설정하는 데 사용되는 HTTP 응답 개체를 나타냅니다.
🎜이 콜백 함수는 http를 처리하는 것입니다. 요청. http 응답을 설정하는 주요 장소입니다. 따라서 웹 서비스를 작성하는 것은 실제로 이 함수에서 요청 및 응답 내용을 지속적으로 처리하는 것입니다. 이는 HTTP 프로토콜 자체의 요청-응답 모델에 의해서도 결정됩니다. 물론 실제 개발에서는 이렇게 혼합된 방식으로 작성할 수 없습니다. 우리 모두는 매우 합리적인 미들웨어 메커니즘과 계층화 기능을 갖춘 프레임워크를 사용합니다. 🎜

청취 방법

🎜우리 모두는 TCP 프로토콜이 HTTP 프로토콜의 기본 프로토콜이고 모든 HTTP 요청 데이터가 TCP를 사용하여 전송된다는 것을 알고 있습니다. HTTP 요청을 보내려면 먼저 TCP 연결이 설정되어야 합니다. 🎜🎜Node에서 HTTP 서비스를 생성할 때도 마찬가지입니다. createServer 메소드가 실행된 후 Server 클래스의 인스턴스가 생성됩니다. Server 클래스는 다른 내장 모듈 net Server 클래스에는 listen 메서드가 있습니다. 다음은 관계를 이해하기 위한 관련 유형 선언입니다. 🎜rrreee🎜따라서 createServer 메소드를 통해 서비스를 생성한 후 listen 메소드를 다시 호출하여 서비스를 시작하고 연결을 수신합니다. 🎜🎜여러 오버로드가 있습니다. 가장 일반적으로 사용되는 것은 시작이 성공한 후 콜백 함수를 실행하는 것입니다. 🎜rrreee🎜예를 들어 포트가 사용 중일 때 서비스가 시작되지 않으면 오류는 콘솔에 직접 보고됩니다. 그런 다음 후속 콜백 함수를 실행합니다. 🎜🎜많이 사용되지 않는 다른 두 가지 오버로드를 소개합니다. 🎜🎜첫 번째는 포트 번호를 지정하지 않는 것입니다. 이때 운영체제는 사용 가능한 포트 번호를 무작위로 할당합니다. 서비스가 성공적으로 시작된 후 server.address().port 속성을 ​​통해 할당된 포트 번호를 얻을 수 있습니다: 🎜rrreee🎜 사용해 보세요: 🎜🎜Node http 모듈 학습: 기본 사용법에 대해 이야기🎜🎜첫 번째는 모니터링할 호스트 이름을 지정하는 것입니다. . 🎜🎜host가 지정되지 않은 경우 기본값은 0.0.0.0(IPv4) 또는 ::(IPv6)입니다. 지원 모든 호스트에서 네트워크 액세스. 🎜🎜locolhost 또는 127.0.0.1로 설정하면 자신의 호스트에서만 접근할 수 있습니다. 🎜rrreee

요약🎜🎜http 모듈의 기본 사용법을 소개했는데, 주로 createServer를 사용하여 서비스를 생성한 후 listen 메소드를 호출하여 서비스를 시작하고 연결을 수신합니다. createServer는 특정 요청을 구체적으로 처리하기 위한 콜백 함수를 수신합니다. 웹 서비스 작성에서는 주로 콜백 함수의 두 가지 매개변수인 요청응답을 사용합니다. 다음에서 자세히 소개하겠습니다. 🎜🎜노드 관련 지식을 더 보려면 🎜nodejs 튜토리얼🎜을 방문하세요! 🎜

위 내용은 Node http 모듈 학습: 기본 사용법에 대해 이야기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제