【问题标题】:How to get maximum results for API when default is set to 500默认设置为 500 时如何获得 API 的最大结果
【发布时间】:2020-01-01 21:20:25
【问题描述】:

此 API 返回的默认结果为 500 https://environment.data.gov.uk/flood-monitoring/id/floodAreas

我想使用 Python 获得最大数量的结果,但我只能将 _limit 设置为更高的数量。我应该如何找到它?

以下附加信息: https://environment.data.gov.uk/flood-monitoring/doc/reference#flood-areas

使用它来获得更高的限制 https://environment.data.gov.uk/flood-monitoring/id/floodAreas/?_limit=100000

【问题讨论】:

    标签: python api url


    【解决方案1】:

    我通常会发送多个请求,每个“页面”结果一个,偏移量逐渐增加。例如你会做这样的事情:

    import requests
    
    url = 'https://environment.data.gov.uk/flood-monitoring/id/floodAreas'
    offset = 0
    result = []
    
    while True:
      res = requests.get(url, params={'_offset': offset})
      res.raise_for_status()
    
      data = res.json()
      items = data['items']
      if not items:
        break
    
      result.extend(items)
      offset += len(items)
    

    他们的 API 像这样工作有多种原因,一个常见的原因是尝试减少拒绝服务攻击的影响。攻击者很容易在限制上添加几个零,从而导致服务器执行成倍增加的工作。相反,一旦您从该服务返回超过几百个对象,分页 HTTP 请求的额外工作将始终占执行总工作的一小部分,并保持客户端“诚实”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 2011-08-29
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      相关资源
      最近更新 更多