python - Flask-reST 少使用分页或获得完整响应

标签 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 上的设置以仅获取第一页(如果它作为查询字符串中的参数传递),那么我会非常高兴,但如果还有另一种方法可以使用两者,那么它也是很好。

最佳答案

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

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

关于python - Flask-reST 少使用分页或获得完整响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46565915/

相关文章:

python - Flask_form : CSRF Token do not match

php - 如何使用 PHP 和 MySQL 高效地对大型数据集进行分页?

c# - 分页上下限

python - 在没有 sudo 权限的 Linux 系统上安装 Python TA-lib 包时出错

Python:如果用反斜杠分隔并删除反斜杠,则加入连续的行

python - 三个引号而不是一个

python - 网络浏览器何时发送 If-Modified-Since?

python - 如何使用 Flask/SQLAlchemy 将返回结果的数量限制为仅 1000 个最新条目?

cakephp - 在 CakePHP 中对搜索结果进行分页

python - 如何读取 IPython %prun (profiler) 命令的输出?