【问题标题】:Ruby API Call Page IssueRuby API 调用页面问题
【发布时间】:2015-06-15 14:16:51
【问题描述】:

这可能是一个基本问题,但很常见,因此将来可能对其他人有所帮助。 我使用 HTTParty 向 API 发出 get 请求,它返回一些信息,如下所示:

{
    datapath: "blah-blah.blah.blah",
    success: true,
    info: {
        row_limit: 500, 
        total_results: 2700,
        total_pages: 6, 
        current_page: 1
    }, 
    result: [
        {name: something, age: 1}, 
        {name: something, age: 2}, 
        {name: something, age: 3}, 
        {name: something, age: 4}, 
        {name: something, age: 5}, 
        ......
    ]
}

我想要一个所有名字的列表,所以我有这样的东西:

response = HTTParty.get('blah-blah.blah.blah')
names = response.map { |entry| entry["name"] }

使用这种方法,我只能在第一页上获得名称,也就是前 500 个,但我想要 2700 个条目中的所有名称。我怎么做?

【问题讨论】:

  • 这就是你要写的吗? “此方法仅在第一页上获取名称,但 2700 个条目的所有名称” 这真的没有意义。您的意思是像“此方法仅在第一页上获取名称,但我想获取所有 2700 个条目的名称”?如果是,请编辑您的问题。
  • 另外,我怀疑答案会因您使用的 API 而异。这里的 API 是什么?
  • @MaxWilliams 抱歉打错了。我已经编辑了我的问题,是的,这正是我的意思。
  • 听起来您需要通过 API 调用更改的是页面大小:将其设置为非常大的值,例如 1000000。api 文档应该告诉您如何执行此操作。我可以在结果中看到 row_limit 是 500 - 这是你想要改变的。所以也许你需要传递的参数是“row_limit=1000000”。在 Rails 中,它通常是“per_page”。就像我说的,它应该在 API 文档中。

标签: ruby-on-rails ruby json api httparty


【解决方案1】:

事实上,一个快速的谷歌将我带到这个页面https://app.enigma.io/api#data 它告诉我有问题的参数是 limit,并且最大值是 500。所以,看起来你不能一键获取所有行的数据。

如果您真的需要一次所有行的数据(实际上也许您不需要),那么您可以传递 limit=500 并继续将 page 增加 1,然后将结果在你最后得到所有的行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    相关资源
    最近更新 更多