📅  最后修改于: 2023-12-03 15:33:09.322000             🧑  作者: Mango
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
对象指定 host
和 path
来定义 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()
方法来向客户端发送响应。