node.js - 将数据从变量流式传输到 PUT 请求

标签 node.js stream

我一直想做的是发出 GET 请求,然后操作变量中的 JSON 数据存储,然后发出 PUT 请求。似乎找不到这方面的文档。也许我在思考这个问题是错误的。一旦我有了变量,我想做如下的事情。我已将 GET 请求中的所有数据保存到 outputV3.json 文件中。

var outputJson = fs.readFileSync("outputV3.JSON");
outputJson = JSON.parse(outputJson);

(function () {
  for (let i = 0; i < outputJson.objects.length; i++) {
    let postId = outputJson.objects[i].id.toString();
    let newSlug = outputJson.objects[i].slug.replace("blog/", "");
    let urlToPut = "https://api.hubapi.com/content/api/v2/blog-posts?limit=1000&hapikey=" + process.env.HAPIKEY;

    urlToPut = urlToPut.replace("blogPostId", postId);

    let put_data = JSON.stringify({
      "slug": newSlug
    });

    put_data.put(urlToPut);
  }
});

最佳答案

如果您需要将数据从文件流式传输到请求,则应创建 read stream从文件和 pipe到达目的地:

const dataStream = fs.createReadStream('outputV3.JSON');

const options = {
  hostname: 'www.example.com',
  port: 80,
  path: '/destination',
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
  }
};

const req = http.request(options, (res) => {
  // response processing...
});

dataStream.pipe(req);

如果您需要更高级的流式处理逻辑,您应该考虑放置自定义 Transform可读文件流和可写请求流之间的流。

关于node.js - 将数据从变量流式传输到 PUT 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46758454/

相关文章:

java - ObjectInputStream 和 getInputStream

c# - 通过 StringBuilder 使用 XmlWriter 序列化的 XML 是 utf-16,而通过 Stream 是 utf-8?

node.js - Express.js 禁用控制台颜色

node.js - 收到错误 - 在 Windows 机器上监听 EADDRINUSE:::3000

node.js - 即使 Redis 不可用,也会在启动时建立 'connection retry' 行为

node.js - 如何在nodejs的多个实例中共享一个对象?

mysql - Node.js 内存使用率高

android - String1.equalsIgnoreCase(String2) 返回 false,即使两者具有相同的值

c# - c# 中的流长度是否有限制?

c++ - 在 C++ 中将 webM 文件作为参数传递?