要在node js中使用Axios访问API端点,必须执行什么操作?

kknvjkwl  于 2022-12-12  发布在  iOS
关注(0)|答案(1)|浏览(114)

我已经使用Postman探索了三星SmartThings的API。我的工作和预期的一样。但是当我获取这些信息并尝试在Axios的节点中实现它时,返回的数据看起来像是压缩的或其他一些blob。下面是我尝试使用的代码来获得响应:

const axios = require("axios");

function main() {
  const st_api = axios.create();
  st_api
    .get("https://api.smartthings.com/v1/locations/", {
      headers: {
        get: {
          Accept: "application/vnd.smartthings+json",
        },
        Authorization: process.env.my_home_token,
      },
      responseType: "json",
      responseEncoding: "utf8",
      decompress: true,
    })
    .then(function (res) {
      console.log("Status: ", res.status);
      console.log("Data: ", res.data);
    })
    .catch(function (err) {
      console.log("Error: ", err);
    });
}

main();

返回的控制台日志为:

Status:  200
Data:  �$ͱ�0��W1wn��-H�����d���6KK��»[�v�/���������BC���BXn���%�ek3��j��&�� m�x�M��i�i1 ��פ��8�`�����4�r_����d�ޤ�A�Z��K�K��UV�rk²�<\�_㿻���wA��

我尝试过插入gzip来解压缩它或其他头信息,但没有任何变化。我期待一些json返回(或至少一些人类可读的东西将是一个开始)。我相信我提取了我的简单(我希望)API调用到一个简短的测试,我尝试没有改变返回的数据。

xwbd5t1u

xwbd5t1u1#

这是Axios中的一个错误。请将Axios版本降级到1.1.3或更低版本,并且在1.3.0发布之前不要升级。参考:https://github.com/axios/axios/pull/5300https://github.com/axios/axios/pull/5306

相关问题