带你深入了解HTTP模块

1. HTTP模块简介

HTTP(超文本传输协议)是Web的基础。它是一个用于传输文件(例如:html、图片等)的协议,它是基于客户端-服务器(C/S)模型来工作的,客户端发起一个请求,服务器做出相应。

Node.js的HTTP模块提供了基本的HTTP功能,可以在Node.js中使用HTTP以编写Web服务器和客户端。它是全HTTP客户端和服务器的实现。

const http = require('http');

2. 创建HTTP服务器

使用HTTP模块创建HTTP服务器的代码非常简单。以下代码将创建一个服务器实例并通过端口3000监听客户请求。

const http = require('http');

http.createServer(function (req, res) {

res.writeHead(200, {'Content-Type': 'text/plain'});

res.end('Hello World!');

}).listen(3000);

console.log('Server listening on port 3000');

2.1. res.writeHead()

在上述代码中,res.writeHead()是一个HTTP响应方法,用于发送响应头到请求。第一个参数是状态码,200表示成功,而第二个参数是一个对象包含响应头的键值对。在上述代码中,响应类型为纯文本,因此Content-Type头是text/plain。

2.2. res.end()

res.end()是另一个HTTP响应方法,它告诉服务器发送响应数据并完成响应。在上述代码中,响应是一个简单的纯文本“Hello World!”字符串。

3. 发送HTTP请求

HTTP模块使发送HTTP请求非常容易。以下代码将向http://www.google.com发送一个GET请求:

const http = require('http');

http.get('http://www.google.com', (res) => {

console.log(`Got response: ${res.statusCode}`);

res.resume();

}).on('error', (e) => {

console.error(`Got error: ${e.message}`);

});

3.1. http.get()

与HTTP服务器不同,http.get()方法发送HTTP请求。它返回一个可读流对象,它可以用于读取响应数据。

3.2. res.resume()

在上述代码中,一个HTTP响应事件处理程序被设置为监听HTTP响应。每次接收到响应数据时,它用简单的console.log()输出响应的状态码。然后res.resume()被调用,告诉响应流恢复其数据读取。

4. 总结

这篇文章深入了如何使用HTTP模块在Node.js中建立Web服务器和客户端。我们学习了如何使用http.createServer()创建HTTP服务器以及如何使用http.get()发送HTTP请求。HTTP协议是Web的基础,Node.js提供了强大的HTTP模块,使我们能够在Node.js中方便地进行Web开发。