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开发。