如何解决pagination_items_per_page 和 pagination_maximum_items_per_page 之间的 API 平台差异
在 API 平台中存在两种不同的设置,我不清楚它们之间有什么区别。这是 pagination_items_per_page
和 pagination_maximum_items_per_page
。在 pagination documentation 中详细说明了如何配置这些设置,但没有说明何时应该使用它。
默认(全局)配置如下,如configuration documentation中所示。
api_platform:
defaults:
# The default number of items per page.
pagination_items_per_page: 30
# The maximum number of items per page.
pagination_maximum_items_per_page: ~
我也关注了this Symfony Casts API 平台分页的话题,那里只用到了 pagination_items_per_page
的设置。这表明在大多数情况下,此设置可能是您所需要的。
当您设置 pagination_items_per_page
时,是否还没有设置将返回的项目数量。您什么时候使用 pagination_maximum_items_per_page
?
解决方法
正如您在 source code 中看到的:
-
pagination_items_per_page
定义每页项目的默认值,可以通过请求覆盖 -
pagination_maximum_items_per_page
定义可能由用户提供的值的上限,以避免用户通过请求所有项 来攻击您的系统
由于有一项设置允许 API 的使用者通过查询参数更改结果数量,因此 pagination_maximum_items_per_page
可以确保用户输入的值不会太大而导致结果过大您的资源很大。
要允许分页作为全局查询参数,请使用以下配置:
api_platform:
defaults:
pagination_client_enabled: true
pagination_client_items_per_page: true
我仍然有一个悬而未决的问题这是否是您使用 pagination_maximum_items_per_page
的唯一情况,或者此设置是否也阻止了特定资源的非常大的分页设置(使用:@ApiResource(attributes={"pagination_items_per_page"=9999})
例如),如果该值超过每页设置的最大值,则覆盖该值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。