【问题标题】:Coinbase api get request does not return all recordsCoinbase api 获取请求不返回所有记录
【发布时间】:2017-06-08 09:42:23
【问题描述】:

这里我尝试使用 coinbase api 获取所有帐户:

require 'MyInclude/vendor/autoload.php';
use Coinbase\Wallet\Client;
use Coinbase\Wallet\Configuration; 
use Coinbase\Wallet\Resource\Account;
use Coinbase\Wallet\ActiveRecord\AccountActiveRecord;

$apiKey =  'API KEY';
$apiSecret =  'API SECERET';
$configuration = Configuration::apiKey($apiKey, $apiSecret);

$client = Client::create($configuration);

$accounts = $client->getAccounts();

OUTPUT : 此数组中只有 25 个帐户

我如何获得所有帐户???

【问题讨论】:

    标签: php coinbase-api


    【解决方案1】:

    查看 API 文档。

    所有返回对象列表的 GET 端点都支持基于游标的 分页对象内的分页信息。 这意味着要获取所有对象,您需要通过 结果总是使用列表中最后一个资源的 id 作为 下次调用的starting_after参数。

    https://developers.coinbase.com/api/v2#pagination

    所以您的请求只返回 25 个第一个结果。为了获取所有帐户,您需要使用返回的next_uri 进行循环(参见示例响应)。

    {
      "pagination": {
        "ending_before": null,
        "starting_after": null,
        "limit": 25,
        "order": "desc",
        "previous_uri": null,
        "next_uri": "/v2/accounts?&limit=25&starting_after=5d5aed5f-b7c0-5585-a3dd-a7ed9ef0e414"
      },
      "data": [
        ...
      ]
    }
    

    【讨论】:

      【解决方案2】:

      您还可以将初始限制设置为 100(默认为 25)。例如

      client.getAccounts({limit: 100}, function(err, accounts) {
            if (err) {
              // Handle error
            } else {
              // Call again if there is pagination
              if (!pagination.next_starting_after) {
                  // Remember to set pagination to 100 again
                  pagination.limit = 100;
                  client.getAccounts({limit: 100}, function(err, accounts) {
                        // do your business logic
                  });
              }
            }
          });
      

      【讨论】:

        【解决方案3】:

        在nodeJS中根据documentation:

        account.getTransactions(null, function(err, txns, pagination) {
          txns.forEach(function(txn) {
            console.log('my txn: ' + txn.id);
          });
          console.log(pagination.next_uri);
          account.getTransactions(pagination, function(err, txns) {
            txns.forEach(function(txn) {
              console.log('my txn: ' + txn.id);
            });
          });
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-07-27
          • 1970-01-01
          • 2019-05-26
          • 2018-06-30
          • 2012-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多