1

有时我想从资源中获得完整的响应,有时我希望它带有分页。到目前为止,我只能使用其中一个或另一个。但是有没有办法根据我传递给 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 上的设置以仅获取第一页(如果它作为查询字符串中的参数传递),那么我会非常高兴,但如果还有另一种方法可以同时使用这两种方法,那么它也是好的。

4

1 回答 1

1

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

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

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

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

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


使用此配置,无需分页即可获得完整响应。只需省略results_per_page参数:

GET http://someaddress/resource
于 2018-06-07T08:21:37.287 回答