Coinbase api get请求不会返回所有记录

时间:2017-06-08 09:42:23

标签: php coinbase-api

在这里,我尝试使用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();

输出:此阵列中只有25个帐户

如何获得所有帐户???

3 个答案:

答案 0 :(得分:2)

检查API文档。

  

返回对象列表的所有GET端点都支持基于游标   分页对象内的分页信息分页。   这意味着要获取所有对象,需要对其进行分页   始终使用列表中最后一个资源的id作为结果   first_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": [
    ...
  ]
}

答案 1 :(得分:1)

您还可以将初始限制设置为 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
            });
        }
      }
    });

答案 2 :(得分:0)

根据{{​​3}}在nodeJS中

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);
    });
  });
});