Я работаю над https://mentionme.app и хочу собирать последний контент из общедоступных форумов на базе Discourse. Для этого я выбрал API-эндпоинт /posts.json.
Я заметил, что этот эндпоинт возвращает, казалось бы, случайное количество элементов. В документации указано, что будут возвращены последние 50 постов, но при более внимательном изучении (например, https://meta.discourse.org/posts.json) мы видим, что вместо 50 последних постов отображаются посты с ID в диапазоне от max-50 до max, и некоторые из них отсутствуют.
Я предполагаю, что тот факт, что в этом эндпоинте нет 50 постов, является несовершенством API — я прав?
Я также предполагаю, что ID постов присваиваются из большего пула ID, который включает и другие сущности (например, ID пользователей?), и мне не стоит об этом беспокоиться.
В частности, для некоторых значений список оказывается пустым, например: https://meta.discourse.org/posts.json?before=1234. Что мне делать, если запрос к списку без параметра “before” (“posts.json”) возвращает пустой список, и я не могу узнать максимальный ID поста, чтобы начать работу?
Некоторые сообщения находятся в защищённых категориях, которые вы не видите, а другие — в личных сообщениях и не включены в список конечной точки, которая показывает последние сообщения в темах, которые вы можете читать.
Например, прямо сейчас это сообщение имеет ID 621820, а следующее — 621818 от @gerhard. Отсутствующее сообщение — 621819, это личное сообщение, поэтому вы его не видите.
Спасибо за объяснение, теперь всё понятно. Я сейчас сканирую несколько форумов Discourse и пока столкнулся с этой проблемой в продакшене один раз (файл posts.json без параметра “before” возвращает пустой список). Это не конец света, но стоит иметь это в виду.