首页 > 解决方案 > 使用节点核心 http 并查看响应。响应json在哪里?

问题描述

通过在 Node.js 中运行此代码,我得到了 201 statusCode。我不确定如何查看我在 Postman 中看到的响应正文。响应对象如此之大,势不可挡,经过多次搜索,我只是不知道发生了什么。如何查看响应正文 json?看看下面的邮递员图片,我所说的就是这个响应。res.body, res.json() 不存在。

const options = {
  method: 'POST',
  headers,
  hostname: uploadHostName,
  path: `/${uploadPath}`,
};

const req = https.request(options, res => {
  res.on('data', data => console.error({data}));

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

  res.on('end', () => {
    const { statusCode, statusMessage } = res;
    console.log({ statusCode, statusMessage });
  });
});

const imageStream = fs.createReadStream(imageFile);

imageStream.pipe(req);

imageStream.on('end', () => {
  console.log("READ_STREAM_END")
  req.end();
});

邮递员响应正文

标签: node.jshttpbuffer

解决方案


const req = https.request(options, res => {
  let chunks = [];

  res.on('data', data => chunks.push(data));

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

  res.on('end', () => {
    const { statusCode, statusMessage, body } = res;
    // console.log(Object.keys(res.client))
    console.log({ statusCode, statusMessage, body });
    console.log(Buffer.concat(chunks).toString());
  });
});

我没有意识到这些块是什么。出于某种原因,我认为这些数据是上传的文件。我也对此感到困惑 - 为什么它将上传数据发送到 res ?然后,在短暂的休息后,我突然意识到了这一点。res.on('data') 可能是我需要的 json!


推荐阅读