簡體   English   中英

調用 api 的 js 函數沒有以預期值響應

[英]js function calling an api doesn't respond with expected values

我正在嘗試使用其 API 從加密貨幣交易所收集所有市場對,但我不確定如何在 JSON 對象中選擇正確的行,因為它似乎不起作用。

api: https : //ftx.com/api/markets

我的代碼:requests.js

import axios from 'axios';
import parsers from './parsers';


async function ftxMarkets() {
    const ftxResponse = await axios.get('https://ftx.com/api/markets');
    return parsers.ftxMarkets(ftxResponse.data);
}

解析器.js

function ftxMarkets(data) {
    const [ftxMarketPairs] = data;
    let ftxPairs = data.map(d => d.name );
    console.log(ftxPairs);

};

我不確定 parsers.js 文件中的d.name ,但我嘗試使用相同的代碼進行另一個交換,只更改那部分並且它起作用了,所以我想這就是問題的來源,雖然不可能當然,我不知道用什么來代替它。

謝謝

我運行了 api 調用,在查看響應后,我看到了一個包含所有加密數據列表的結果鍵。 所以我猜如果你用這樣的結果對象調用解析器它會工作

    return parsers.ftxMarkets(ftxResponse.result);
    // try parsers.ftxMarkets(ftxResponse.data.result) if the above one doesnt work

然后在解析器中它應該正常工作

function ftxMarkets(data) {
    let ftxPairs = data.map(d => d.name );
    console.log(ftxPairs);
}; 

更新:

由於 fxtResponse.data.result 有效。 您的問題應該是 CORS 問題,有兩個選項可以解決。

  1. Web 瀏覽器中的 CORS 插件(不推薦在生產中使用)
  2. 通過服務器代理它。 通過代理請求資源 - 最簡單的方法,你可以做的是,編寫一個小型節點服務器(或者如果你已經有一個后端將它與你的前端關聯,你可以使用它)它會請求3rd 方 API 並發回響應。 現在在該服務器響應中,您可以允許跨域標頭。

對於 2 如果您已經有一個 nodeJs 服務器。 您可以使用 CORs Npm 包並從服務器調用第三方 api,並將請求提供給啟用 CORS 的前端。

暫無
暫無

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

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