Chat API:direction=past 时 page_size 参数被忽略

我正在报告 Discourse Chat 插件 API 的一个错误。在查询过去的聊天消息时,page_size 参数被忽略了,并且端点总是返回最大数量的消息。

重现步骤:

  1. 向聊天消息端点(例如 /chat/{channel_id}/messages.json)发出 API 调用。

  2. 在请求中使用以下参数:

    • target_message_id:[最近消息的 ID]

    • directionpast

    • page_size5(或小于 50 的任何数字)

预期行为: API 应返回一个 JSON 对象,其中包含在指定 target_message_id 之前发送的最大 5 条消息。

实际行为: API 返回 50 条消息,忽略了 page_size=5 参数。在这种情况下,它似乎被硬编码为最大页面大小。

感谢您对此事的关注!

2 个赞

通读实现,这似乎是故意的:

也许 @loic 有些想法。

2 个赞

我花了一些时间尝试重现它,但未能成功。

我通过我们的规范和本地实例上的手动检查了 Chat::MessagesQueryChat::ListChannelMessages 以及控制器操作。page_size 参数和 direction 参数都如预期般被考虑在内。

@Nima1 你确定使用了正确的端点吗?它应该包含 api,像这样:/chat/api/channels/3/messages?target_message_id=40&direction=past&page_size=5

我还没检查的是它在 stable 上是否表现不同。你的实例是否与 tests-passed 分支同步?

2 个赞

感谢您对此事的关注。

抱歉,我忘记提及一个关键细节:此问题仅发生在启用了话题的频道中。这可能就是您无法复现的原因。

当我从特定话题获取消息时,page_size 参数被忽略了。例如,当我使用此端点并设置 page_size=5 时:

/chat/api/channels/64/threads/1526/messages?target_message_id=19205&page_size=5

API 返回的是默认的 50 条消息,而不是请求的 5 条,尽管话题中有大量可用消息。看来问题特定于话题 API 端点。

2 个赞

找到了 Bug!我已经在重构那个服务了,所以我在其中包含了修复:

4 个赞

此主题在上次回复后 3 天自动关闭。不再允许新回复。