烧瓶 - 不安分使用分页或得到完整的回应

时间:2017-10-04 13:17:20

标签: python flask pagination flask-restless

有时候我想从资源中获取完整的响应,有时候我想用分页来获取它。到现在为止,我只能使用其中一个。 但是,根据我传递给GET请求的参数,是不是有办法设置flask-restless来使用两者?

如果我想为特定资源禁用分页,请更改以下设置:

manager.create_api(someresource, methods=['GET'], results_per_page=None)

但是现在分页是完全禁用的,这不是我希望的行为。

如果默认启用分页,则仅返回第一页。 如果我特意在查询字符串中传递页面1,是不是有办法告诉flask-restless只获取第一页:

GET http://someaddress/resource?page=1 

我实际上能够使用循环来解决问题,但我不认为这是一个很好的解决方案,因为我必须使用多个请求。

我请求了资源并获取了total_pages然后我运行了一个循环到total_pages并将每次迭代作为参数传递给查询字符串,以获取另一个获取每个页面的新请求:

i = 1
while i <= response.total_pages:
    page_response = requests.get("http://someurl/someresource?page=" + str(i))
    ...

但我不认为这是解决这个问题的好方法。如果有可能更改flask-restless上的设置以仅获取第一页,如果它作为参数在查询字符串中传递,那么我会非常高兴但是如果还有另一种方法可以同时使用它们那么它也是好。

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式禁用分页来获得所需的行为:

manager.create_api(someresource, methods=['GET'], results_per_page=0)

然后使用results_per_page参数查询API,如下所示:

GET http://someaddress/resource?results_per_page=2

results_per_page参数必须是正整数,并且是您的新页面大小。该参数将进一步记录here

使用此配置可​​以直接获得没有分页的完整响应。只需省略results_per_page参数:

GET http://someaddress/resource