flask-restless 使用分页或获得完整响应

Posted

技术标签:

【中文标题】flask-restless 使用分页或获得完整响应【英文标题】:flask-restless use pagination or get full response 【发布时间】:2018-03-15 21:49:34 【问题描述】:

有时我想从资源中获得完整的响应,有时我希望它带有分页。到目前为止,我只能使用其中一个或另一个。 但是有没有办法根据我在 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】:

你可以通过禁用分页来获得你想要的行为:

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

【讨论】:

以上是关于flask-restless 使用分页或获得完整响应的主要内容,如果未能解决你的问题,请参考以下文章

Node.js学习14~实现翻页或分页查询

休眠分页或批处理

在 apollo-react 问题中默认获取更多分页或仅网络策略

在尝试进行基于 ajax 的分页或过滤时,在局部视图中呈现的 WebGrid 将引发““jQuery is not defined””

JavaScript 分页算法

使用 flask-restless 创建 API 响应