簡體   English   中英

我必須做什么才能在 node.js 中使用 Axios 來訪問 API 端點?

[英]What must I do to use Axios in node js to access an API endpoint?

我已經使用 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 來解壓縮它或其他 header 信息,但沒有任何變化。 我期待一些 json 返回(或者至少是人類可讀的東西)。 我相信我將我的簡單(我希望)api 調用提煉成一個簡短的測試,我嘗試的任何事情都沒有改變返回的數據。

這是 Axios 中的一個錯誤。將您的 Axios 版本降級到 1.1.3 或更低版本,並且在 1.3.0 發布之前不要升級。 參考: https://github.com/axios/axios/pull/5300,https ://github.com/axios/axios/pull/5306

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM