API StackExchange возвращает меньше сайтов, чем фактическое число

Я работаю над одним приложением, которое создает временную шкалу пользователя на каждом сайте Stack Exchange. У нас есть несколько пользователей на SharePoint.SE.

Поскольку мне нужен список всех сайтов, я пытаюсь получить его с помощью API 2.2.

GET /2.2/sites/

Как показано здесь. Но он получает только частичные сайты. В ответ отсутствуют такие сайты, как Beer.SE, SharePoint.SE.

Как их тоже получить?


person Rahul Patil    schedule 08.07.2014    source источник


Ответы (1)


Вам нужно передать дополнительные параметры. Beer.SE появляется на page 3 с pagesize 100:

https://api.stackexchange.com/docs/sites#page=3&pagesize=100&filter=default&run=true

Без параметров pagesize по умолчанию равно 30 результатов. Вы можете узнать, есть ли элементы больше, чем то, что возвращается в вашем вызове, проверив параметр has_more в общей оболочке.

В этом случае при размере страницы 3 всего 3 страницы, и Beer.SE оказывается на последней странице.


После повторного прочтения документации по сайтам говорится

Параметр pagesize для этого метода не имеет ограничений, так как для многих приложений повторная выборка с /sites без необходимости усложняет задачи запуска.

Это означает, что вы можете установить размер своей страницы примерно на 1000, и Beer.SE появится в этих результатах. На данный момент существует не 1000 сайтов Stack Exchange, так что это сработает.

person Andy♦    schedule 01.10.2014