Node.js http 模块

本文被收录到:

Node.js 教程

本专题关于 Node.js 基础知识和模块

目录

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 非常重要。

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
搜神记
793 文章
4 教程
8 项目
随机推荐
Debian11 安装笔记1:编译安装Nginx、Naxsi 和 Njs
WordPress 常用函数 / sanitize_user
Node.js url 模块
Express 使用 cors 模块支持跨域
MySQL的外键总结
使用 svg 作为背景图片
WordPress 文章置顶循环
Node.js querystring 模块