📜  如何在 Node.js 中发出 HTTP 请求?(1)

📅  最后修改于: 2023-12-03 14:52:27.605000             🧑  作者: Mango

在 Node.js 中发出 HTTP 请求

在 Node.js 中,我们可以轻松地发出 HTTP 请求并处理响应。这个功能非常有用,因为它可以让我们从其他网站获取数据或与 API 交互。

发送 GET 请求

发送 GET 请求是最简单的操作。我们只需要使用 Node.js 的内置 http 模块,调用其中的 get() 方法并传入 URL 地址即可。例如,要获取 Google 的首页,我们可以这样写:

const http = require('http');

http.get('http://www.google.com/', (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk);
  });

}).on('error', (err) => {
  console.error(err);
});

这里,我们使用了 http.get() 方法,传入 Google 的网址和一个回调函数。当响应开始时,statusCode 属性将被输出,然后每个数据块将被输出到控制台。

发送 POST 请求

要发送 POST 请求,我们需要使用 http.request() 方法并将请求体作为参数传递。例如,向名为 example.com 的 API 发送包含用户名和密码的 JSON 对象:

const http = require('http');

const data = JSON.stringify({
  username: 'myusername',
  password: 'mypassword'
});

const options = {
  hostname: 'example.com',
  port: 80,
  path: '/api/authenticate',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk);
  });

}).on('error', (err) => {
  console.error(err);
});

req.write(data);
req.end();

这里我们定义了请求体的数据和请求头,然后用它们创建了 http.request() 对象。我们处理响应和错误的方式与前面的示例相同,只不过这里我们需要使用 req.write() 方法将数据写入请求体,并在结束时调用 req.end() 方法。

HTTPS 请求

我们可以使用 https 模块发送 HTTPS 请求,其实现方式类似于 HTTP 请求。以下是向 Github 发送 HTTPS GET 请求的例子:

const https = require('https');

https.get('https://api.github.com/users/octocat', (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (chunk) => {
    console.log(chunk.toString('utf-8'));
  });

}).on('error', (err) => {
  console.error(err);
});

这里我们使用 https.get() 方法,并传入正确的 HTTPS URL 地址。其他操作与 HTTP 请求相似。

结论

在 Node.js 中发出 HTTP(S) 请求非常简单,只需使用 httphttps 模块中的方法即可。具体实现取决于请求的类型和响应的内容,但 Node.js 提供了一系列灵活的 API 和工具,可用于处理 HTTP 请求并使其变得简单。