📅  最后修改于: 2023-12-03 15:23:14.175000             🧑  作者: Mango
在 Node.js 中,有许多不同的模块可用于执行 HTTP 请求和响应。这些模块包括 http
、https
、http2
和 http2
。下面我们将对这些模块进行简要介绍。
const http = require('http');
http
模块是 Node.js 内置的一个模块,可用于执行 HTTP 的客户端和服务器端应用。你可以使用 http.createServer()
方法来创建一个 HTTP 服务器,例如:
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(3000, '127.0.0.1');
这会创建一个监听在 127.0.0.1:3000
上的 HTTP 服务器。
const https = require('https');
https
模块是 http
模块的扩展,添加了支持 SSL/TLS 安全套接字的功能。同样,你可以使用 https.createServer()
方法来创建一个 HTTPS 服务器,例如:
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(443);
这会创建一个监听在 443
端口的 HTTPS 服务器。
const http2 = require('http2');
http2
模块是 http
模块的进一步扩展,支持 HTTP/2 协议。你可以使用 http2.createSecureServer()
方法创建一个安全的 HTTP/2 服务器,例如:
const http2 = require('http2');
const fs = require('fs');
const server = http2.createSecureServer({
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
});
server.on('error', (err) => console.error(err));
server.on('stream', (stream, headers) => {
stream.respond({
'content-type': 'text/html',
':status': 200
});
stream.end('<h1>Hello World</h1>');
});
server.listen(8443);
这会创建一个安全的 HTTP/2 服务器,监听在 8443
端口。
const http2 = require('http2');
const client = http2.connect('https://localhost:8443');
const req = client.request({':path': '/'});
req.on('response', (headers, flags) => {
for (const name in headers) {
console.log(`${name}: ${headers[name]}`);
}
});
req.setEncoding('utf8');
let data = '';
req.on('data', (chunk) => {
data += chunk;
});
req.on('end', () => {
console.log(`\n${data}`);
});
req.end();
http2-client
模块是用于便捷地发送 HTTP/2 请求的模块。以上代码展示了如何使用 http2.connect()
和 client.request()
方法发送 HTTP/2 请求,并监听响应的处理。