node-使用querystring内置模块解决分页返回数据太多-导致json.parse()解析报错

前言

  • 最近在使用node服务,http模块调用其他服务的分页接口有时JSON.parse()会报错
  • 发现当分页返回json数据过多时,会导致控制台输出不全-数据不对-导致JSON.parse()出错
  • 查阅资料发现,控制台输出也是相当于开辟了一块空间,现在这块空间存不下这么多json数据
  • node有提供内置模块解决方案,使用querystring内置模块-把json数据以流的形式输出转换

代码实现

javascript 复制代码
// 导入http模块
const http = require("http");

// 导入querystring模块
const querystring = require("querystring");

// 注意基地址
// let base_url = "https://ceshi.com"

// 基地址-去掉https://前缀 - 不去会报错
let base_url = "ceshi.com"




// post-请求 - 分页查询
// 使用promise - 方便维护和管理
const requestpost = () => {
  return new Promise((resolve, reject) => {

    // 请求参数
    let postData = querystring.stringify({
      // 页码
      // 页数
      // 总数
      // 参数
    });

    // 配置项
    const options = {
      // 基地址
      hostname: base_url,
      // 默认端口-不要改
      port: 80,
      // 接口路径
      path: "/api/ceshi/list",
      // 请求方式
      method: "post",
      // 请求头信息
      headers: {
        // 请求参数格式
        "Content-Type": "application/json; charset=utf-8",
        // token
        Authorization: "",
      },
    };

    // 发送请求
    const getpost = http.request(options, (res) => {
      // 会包装一层data-看打印
      // console.log('res',res)
      // 使用JSONStream解析数据
      // 真正数据data-不然jsonStream.on会执行多次
      const jsonStream = JSONStream.parse(res.data);

      // 处理解析到的每个对象
      jsonStream.on("data", (data) => {
        // console.log("打印数据", data);
        // 全部数据-最外层
        resolve(data);
      });
      
      // 解析错误
      jsonStream.on("error", (err) => {
        console.error(err.message);
      });

      // 将响应流 - 放到JSONStream
      res.pipe(jsonStream);

    });

    // 错误处理
    getpost.on("error", (err) => {
      // 返回失败结果
      reject(err.message);
    });

    // 请求参数-写入
    getpost.write(postData);

    // 结束请求-不写请求发送不出去
    getpost.end();

  });
};

总结:

经过这一趟流程下来相信你也对 node-使用querystring内置模块解决分页返回数据太多-导致json.parse()解析报错 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

有什么不足的地方请大家指出谢谢 -- 風过无痕

相关推荐
骑着蜗牛撵大象3274 小时前
用 Codex 批量做数字人商品口播视频:从分镜 JSON 到成片校验的流水线
java·ffmpeg·json·音视频·数字人·视频·codex
SEO_juper4 小时前
Node.js 全站死链检测工具:从 sitemap 出发一次找全 404
开发语言·人工智能·python·node.js·seo·外贸独立站
外收内放5 小时前
FastAPI猜字谜实战(3):把每一局存成JSON
开发语言·python·学习·json·fastapi
一只旭宝5 小时前
JSON 简介
json
数据狐(Datafox)1 天前
一文读懂京东商品详情API:返回字段解读与 JSON 样例
java·开发语言·数据库·windows·json
喜欢喝果茶.1 天前
JSON / CBOR / Protobuf区别
mqtt·json
孟陬1 天前
解决动态 import 类型 Any 痼癖
typescript·node.js·bun
Dumbness1 天前
后台管理员把自己锁在门外:RBAC 里「自己的权限只能由别人来减」
安全·node.js
攻城狮白玉1 天前
Node.js 发布紧急安全更新:10 个漏洞,8 枚危险证书被拉黑。附AI修复提示词
node.js
江屿风1 天前
【Plain Language Large Model】【大语言模型底层原理全解析:从Token生成到智能体演进】流食般投喂
人工智能·笔记·语言模型·llm·json·token·聊天模板