node.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > node.js > Node.js http/https请求和下载

Node.js进行http/https请求和下载的实现实例

作者:卿·静

本文将介绍使用使用 Node.js 的 https 模块和 fs 模块实现了三个 HTTP 请求的功能,分别展示了如何通过 HTTPS 发起 GET 请求获取 JSON 数据、发送带有请求头的 POST 请求,以及下载图片并保存到本地,

本文将介绍如何使用使用 Node.js 的 https 模块和 fs 模块实现了三个 HTTP 请求的功能。分别展示了如何通过 HTTPS 发起 GET 请求获取 JSON 数据、发送带有请求头的 POST 请求,以及下载图片并保存到本地。以下是对每个部分的详细说明。

1. 引入必要的模块

const http = require("http");   // 用于发起HTTP请求
const https = require("https"); // 用于发起HTTPS请求
const fs = require("fs");       // 用于文件操作(如保存图片)

下面的代码例子将使用 https 模块发送请求,如需发送 http 请求,可将代码中的 https 换成 http。

2. GET请求获取JSON数据

功能描述

通过HTTPS发起一个GET请求,从jsonplaceholder.typicode.com/posts/5获取指定ID的文章数据,并将返回的JSON数据解析后输出到控制台。

核心代码分析

const get_options = {
  hostname: "jsonplaceholder.typicode.com", // 目标服务器域名
  port: 443, // HTTPS 默认端口号为443  HTTP默认端口号为80
  path: "/posts/5", // 请求路径,获取 ID 为 5 的文章
  method: "GET", // 请求方法
};

//创建请求
const get_req = https.request(get_options, (res) => {
  let data = "";

  res.on("data", (chunk) => {
    data += chunk; // 将响应数据片段拼接到变量中
  });

  res.on("end", () => {
    const jsonData = JSON.parse(data); // 解析 JSON 数据
    console.log(jsonData); // 输出解析后的 JSON 对象
  });
});

get_req.on("error", (error) => {
  console.error(`Problem with request: ${error.message}`); // 处理请求错误
});

get_req.end(); // 发送请求

参数说明

3. POST请求发送JSON数据

功能描述

构造一个POST请求,向jsonplaceholder.typicode.com/posts发送JSON数据。展示了如何设置请求头(如Content-TypeContent-Length),并将JSON数据作为请求体发送。

核心代码分析

const post_options = {
  hostname: "jsonplaceholder.typicode.com",
  port: 443,
  path: "/posts",
  method: "POST",
  Headers: { // 设置请求头
    "Content-Type": "application/json", // 指定请求体类型为 JSON
    "Content-Length": Buffer.byteLength(
      JSON.stringify({
        userId: 1,
        title: "hello world",
        body: "你好",
      })
    ),
  },
};

const post_req = https.request(post_options, (res) => {
  let data = "";

  res.on("data", (chunk) => {
    data += chunk;
  });

  res.on("end", () => {
    const jsonData = JSON.parse(data);
    console.log(jsonData);
  });
});

post_req.on("error", (error) => {
  console.error(`Problem with request: ${error.message}`);
});

post_req.end();

参数说明

4. 下载图片并保存到本地

功能描述

通过HTTPS发起一个GET请求,从cdn2.thecatapi.com/images/2OKotXbFe.jpg下载一张猫的图片,并将其保存到本地文件系统。

核心代码分析

const img_options = {
  hostname: "cdn2.thecatapi.com",
  port: 443,
  path: "/images/2OKotXbFe.jpg",
  method: "GET",
};

const img_req = https
  .request(img_options, (res) => {
    if (res.statusCode !== 200) {
      console.error(`Failed to fetch image, status code: ${res.statusCode}`);
      res.resume(); // 消耗响应数据以释放内存
      return;
    }

    const filePath = "./cat_image.jpg";
    const fileStream = fs.createWriteStream(filePath);

    res.pipe(fileStream);

    fileStream.on("finish", () => {
      fileStream.close(() => {
        console.log("Image saved successfully.");
      });
    });
  })
  .on("error", (err) => {
    console.error(`Error downloading image: ${err.message}`);
  });

img_req.end();
参数说明

总结

本文详细介绍了如何使用Node.js的https模块发起不同类型的HTTP请求,并通过一个完整代码示例展示了如何实现以下功能:

  1. 使用GET请求获取JSON数据。
  2. 构造POST请求发送JSON数据。
  3. 下载图片并保存到本地。

通过这些示例,读者可以掌握https模块的基本用法,并能够根据实际需求扩展功能。无论是开发RESTful API客户端还是实现文件下载工具,https模块都是不可或缺的重要工具。

到此这篇关于Node.js进行http/https请求和下载的实现实例的文章就介绍到这了,更多相关Node.js http/https请求和下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文