如何在一个 GET 请求中解析来自 Coinbase API 的所有股票代码

Posted

技术标签:

【中文标题】如何在一个 GET 请求中解析来自 Coinbase API 的所有股票代码【英文标题】:How to parse all ticker symbols from Coinbase API in one single GET request 【发布时间】:2020-01-16 17:12:56 【问题描述】:

我正在尝试在来自 Coinbase REST API 的单个 JSON 有效负载响应中获取所有代码(货币对)及其相应的买价和卖价数据。如果我对每个单独的股票代码都有 GET 请求,我将不得不避免收到 Coinbase API 文档中提到的 729 错误。

我对此 URL 有一个 GET 请求 -> https://api-public.sandbox.pro.coinbase.com/products/BTC-USD/book

它返回了我需要的 BTC-USD 数据,但实际上我对交易所列出的所有代码感兴趣,并在一次查询中获得相应的买价和卖价数据。

例如,许多其他交易所将货币代码首字母缩写词替换为“ALL”。所以我的 JSON 有效负载响应如下所示:

我尝试设置一个计时器函数来一次解析单个代码 3 秒,但这不是从 JSON 获取我需要的所有数据的最快方法。

JSON 响应应如下所示:


  "ticker": [
    
      "symbol": "ABBCBTC",
      "24hrHigh": "0.00000850",
      "last": "0.00000842",
      "24hrVol": "1507399.04",
      "ask": "0.0000084",
      "24hrLow": "0.00000813",
      "bid": "0.00000833",
      "24hrAmt": "12.52040928"
    ,
    
      "symbol": "ABTETH",
      "24hrHigh": "0.001078",
      "last": "0.001078",
      "24hrVol": "5.27",
      "ask": "0.001988",
      "24hrLow": "0.000964",
      "bid": "0.000983",
      "24hrAmt": "0.005681"
    ,
    
      "symbol": "ABTUSDT",
      "24hrHigh": "0.212",
      "last": "0.202",
      "24hrVol": "944.91",
      "ask": "0.203",
      "24hrLow": "0.190",
      "bid": "0.197",
      "24hrAmt": "183.148"
    ,
    
      "symbol": "ABYSSETH",
      "24hrHigh": "0.0000500",
      "last": "0.0000500",
      "24hrVol": "0",
      "ask": "0.000055",
      "24hrLow": "0.0000500",
      "bid": "0.0000301",
      "24hrAmt": "0.0000000"
    ,
    
      "symbol": "ACDCBTC",
      "24hrHigh": "0.000000011",
      "last": "0.000000010",
      "24hrVol": "86773.47",
      "ask": "0.00000001",
      "24hrLow": "0.000000009",
      "bid": "0.000000009",
      "24hrAmt": "0.000858894"
    ,
    
      "symbol": "ACDCUSDT",
      "24hrHigh": "0.000110",
      "last": "0.000107",
      "24hrVol": "24011.63",
      "ask": "0.000107",
      "24hrLow": "0.000085",
      "bid": "0.000087",
      "24hrAmt": "2.088214"
    ,
    
      "symbol": "ADDETH",
      "24hrHigh": "0.000046",
      "last": "0.000046",
      "24hrVol": "0",
      "ask": "0.000062",
      "24hrLow": "0.000046",
      "bid": "--",
      "24hrAmt": "0.000000"
    ,
    
      "symbol": "ADIETH",
      "24hrHigh": "0.00000310",
      "last": "0.00000310",
      "24hrVol": "0",
      "ask": "0.00000744",
      "24hrLow": "0.00000310",
      "bid": "0.0000031",
      "24hrAmt": "0.00000000"
    ,
    
      "symbol": "ADNBTC",
      "24hrHigh": "0.0000000378",
      "last": "0.0000000375",
      "24hrVol": "551104713.07",
      "ask": "0.0000000379",
      "24hrLow": "0.0000000366",
      "bid": "0.0000000367",
      "24hrAmt": "20.4085431339"
    
  ]

【问题讨论】:

不幸的是,并非每个交易所都支持一次查询多个市场的能力... 【参考方案1】:

您似乎无法在一次调用中获取所有代码 ((我还没有时间重新构建网络套接字的基础设施。Coinbase 是唯一一个不允许在一次通话中接收所有代码的交易所。我从 Bittrex、Bitmex、Kraken、Bitfinex、Binance 获得报价 - 并且没有一次性获取所有代码的问题。

祝你好运!

【讨论】:

【参考方案2】:

来自Coinbase docs:他的 URL 将为 Coinbase 上的所有代码提供数据:

curl --request GET \
     --url https://api.exchange.coinbase.com/products \
     --header 'Accept: application/json'

如果您需要有关每个代码的更详细数据,您可以遍历响应并对每个代码名称进行单独调用。

【讨论】:

以上是关于如何在一个 GET 请求中解析来自 Coinbase API 的所有股票代码的主要内容,如果未能解决你的问题,请参考以下文章

如何以正确的方式解析来自 GET 响应的数据?

以(Json 格式)解析来自 Google Place api 响应的数据

如何在 AJAX POST 请求后解析来自服务器的 JSON 响应?

如何使用 JSON.serializer 在 Swift 中解析 JSON

解析来自 Node js + 车把的 POST 请求

如何解析查尔斯中的所有请求,除了一个