有时候我想从资源中获得完整的响应,有时候我想用分页来获取它。到现在为止,我只能使用其中一个。但是,根据我传递给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上的设置以仅获取第一页,如果它作为参数在查询字符串中传递,那么我会非常高兴但是如果还有另一种方法可以同时使用它们那么它也是好。
您可以通过以下方式禁用分页来获得所需的行为:
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