我试图使用 API 来维护一个最近帖子的列表。使用 posts.json 时效果很好。
但我遇到的问题在于,已删除的帖子不会出现在 posts.json 中。而且似乎也没有 posts_deleted.json 或类似的接口。
那么,如何通过 API 获取所有已删除的帖子呢?这看起来应该很简单,但我却想不出办法。是不是我漏掉了什么?
我试图使用 API 来维护一个最近帖子的列表。使用 posts.json 时效果很好。
但我遇到的问题在于,已删除的帖子不会出现在 posts.json 中。而且似乎也没有 posts_deleted.json 或类似的接口。
那么,如何通过 API 获取所有已删除的帖子呢?这看起来应该很简单,但我却想不出办法。是不是我漏掉了什么?
我认为这不太可能实现。或许你可以详细说明一下为什么试图通过 API 查找已删除的帖子,这样大家可能会针对你想解决的问题提供一些替代思路。
一个可行的方案是配置一个“帖子事件”Webhook,将其指向外部服务。当帖子被创建、编辑、删除或恢复时,该 Webhook 都会被触发。也许这个 Webhook 能提供你所需的信息。
我使用 API 将帖子存储在我的数据库中,这样就不必每次为每个用户显示数据时都调用 API。这也让我能够将数据完全关联到所有表、添加到视图等。
然后,我可以在 Discourse 之外在我的网站上展示帖子的相关信息。
但由于似乎无法得知帖子何时被删除,我最终会展示一些已删除的帖子,导致用户不明白为什么链接无法正常工作。
我不明白为什么没有方法可以查找已删除的帖子?这似乎是一个非常明显的功能。甚至在 posts.json 中有一个“用户删除”字段,但该字段似乎永远不可能为 True,因为 posts.json 永远不会显示已删除的帖子。因此,要么该字段不应存在,要么 posts.json 应该显示已删除的帖子。
这是一个非常棒的方案!
我认为将“帖子事件”Webhook 指向您的应用程序可以解决这个问题。当帖子被删除时,Webhook 的 X-Discourse-Event 头会被设置为 post_destroyed。您可以在应用程序中保存已删除帖子的 ID,并在网站上显示 Discourse 内容时排除这些帖子。