📜  Node.js HTTP 模块(1)

📅  最后修改于: 2023-12-03 15:33:09.322000             🧑  作者: Mango

Node.js HTTP 模块介绍

Node.js HTTP 模块是一个内置的 Node.js 核心模块,它提供了一种创建基于 HTTP 协议的 Web 服务器的能力。使用该模块可以创建基于 HTTP 协议的客户端,也可以创建服务端,让 Node.js 成为一个完整的 Web 开发平台。

引入模块

在 Node.js 中引入 HTTP 模块非常简单,只需使用 require('http') 即可引入。

const http = require('http');
创建服务端

使用 HTTP 模块创建服务端需要调用 http.createServer() 方法。createServer() 方法返回一个服务器实例对象,该对象有一个 listen() 方法用于指定服务器监听的端口和 IP 地址,即可让服务器接收客户端请求。

// 创建一个简单的 HTTP 服务器
const http = require('http');

const server = http.createServer((req, res) => {
  res.write('Hello World!');
  res.end();
});

server.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

在上面的示例中,使用 http.createServer() 方法创建了一个简单的 HTTP 服务器,当收到客户端请求时,会向客户端返回 "Hello World!"。

创建客户端

使用 HTTP 模块创建客户端需要调用 http.request() 方法。request() 方法接收一个 URL 和一些可选的配置参数,返回一个客户端请求对象。在请求对象上调用 end() 方法发送请求,该方法接收可选的请求体参数。

// 发送一个 HTTP GET 请求
const http = require('http');

const options = {
  host: 'www.example.com',
  path: '/'
};

const request = http.request(options, (res) => {
  console.log(`Response status code: ${res.statusCode}`);
  res.on('data', (data) => {
    console.log(data.toString());
  });
});

request.end();

在上面的示例中,使用 http.request() 方法发送了一个简单的 HTTP GET 请求。通过给 options 对象指定 hostpath 来定义 URL,然后使用 http.request() 方法创建请求对象。当收到响应时,可以访问响应的 statusCode 属性来获取状态码,并通过监听 data 事件获取响应体。

监听请求事件

除了使用上面演示的监听 data 事件的方式获取请求体之外,还可以通过监听 request 事件来获取请求对象。在 HTTP 服务器中,当客户端请求到达时,HTTP 模块会发出 request 事件。

// 监听 HTTP 请求事件
const http = require('http');

const server = http.createServer((req, res) => {
  console.log('Received a request');
  res.write('Hello World!');
  res.end();
});

server.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

在上面的示例中,当客户端向服务器发送请求时,HTTP 模块会发出 request 事件,服务器会通过 req 参数表示该请求的相关信息,通过调用 res.write()res.end() 方法来向客户端发送响应。