收录了这篇文章
Node.js 的 http 模块是用于创建 HTTP 服务器和客户端的一个内置库。它允许开发者处理来自浏览器的请求,发送响应,并构建 RESTful API、Web 服务器等。以下是关于 http 模块的一些基本使用方法和概念:
创建 HTTP 服务器
最简单的 Node.js HTTP 服务器可以这样创建:
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(3000, '127.0.0.1', () => {
console.log('Server running at http://127.0.0.1:3000/');
});
这段代码做了以下几件事:
- 导入 http 模块。
- 使用 createServer 方法创建一个 HTTP 服务器。这个方法接受一个回调函数作为参数,该函数会在每次有请求到达服务器时被调用。回调函数的两个参数分别是请求对象(req)和响应对象(res)。
- 设置响应的状态码为 200,表示成功。
- 设置响应头,指定内容类型为纯文本。
- 使用 res.end() 方法结束响应,并向客户端发送消息 "Hello World"。
- 调用 listen 方法启动服务器,监听 3000 端口。
请求与响应对象
- 请求对象(req):包含了所有关于HTTP请求的信息,如请求方法(GET、POST等)、URL、头信息以及请求数据等。
- 响应对象(res):用来构造并发送HTTP响应给客户端。可以设置状态码、响应头以及响应体内容。
发送文件
服务器还可以用来发送静态文件,如HTML页面:
const fs = require('fs');
// ...
server.on('request', (req, res) => {
fs.readFile('index.html', (err, data) => {
if (err) {
res.writeHead(404);
res.end(JSON.stringify(err));
return;
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(data);
});
});
创建 HTTP 客户端
除了创建服务器,http 模块也可以用来作为客户端发送 HTTP 请求:
const options = {
hostname: 'www.example.com',
port: 80,
path: '/path',
method: 'GET',
};
const req = http.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
res.on('end', () => {
console.log('No more data in response.');
});
});
req.on('error', (e) => {
console.error(`problem with request: ${e.message}`);
});
req.end();
这段代码展示了如何使用 http.request() 方法发起一个 GET 请求到指定的 URL,并处理响应。
小结
Node.js 的 http 模块是非常强大的,可以用于构建复杂的网络应用。它不仅支持创建服务器接收和响应请求,还能够作为客户端发起请求,是学习 Node.js 网络编程的基础。随着项目复杂度的增加,你可能会考虑使用更高级的框架如 Express.js 来简化开发流程,但理解底层的 http 模块对于深入学习 Node.js 非常重要。
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。