@vasiliy763
IT engineer

Запросы к API с помощью скрипта на python?

API Контур Диадока.
Выполняю запрос к API метода GetDocuments (
https://developer.kontur.ru/docs/diadoc-api/http/GetDocuments.html
)
Получаю JSON в котором только 100 документов. И у каждого документа есть свой: 1"IndexKey", 2"MessadeId" и 3"EntityId" Далее поочередно циклом пробегаюсь по документу и из этого документа передаю 2"MessadeId" и 3"EntityId" в другой метод GenerateDocumentZip (
https://developer.kontur.ru/docs/diadoc-api/http/GenerateDocumentZip.html
) чтобы скачать полученные документы из списка, все хорошо, но проблема в том что за один зарос к методу GetDocuments можно получить только 100 документов, но в самом запросе может быть значение "TotalCout" больше 100 документов (на скриншоте 193). И чтобы получать каждый последующий документ, необходимо в обращение к методу GetDocuments передавать "IndexKey" действующего документа. Как сделать так, что после того как цикл пробежится по всем 100 документам в JSON файле, чтобы после этого с 101 документа, опять вернуться к методу GetDocuments и передать в него "IndexKey" последнего документа. далее получить новый JSON файл, далее опять поочередно циклом пробегаюсь по документу и из этого файла и передавать 2"MessadeId" и 3"EntityId" в другой метод GenerateDocumentZip для дальнейшей загрузки документа? И так пока будут выполняться условия по заданным временным рамкам. скин запроса GetDocuments прикладываю 672fa306326ad156486464.jpeg
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 1
@bbkmzzzz
Это почти обычная пагинация
По доке afterIndexKey, для получения следующей пачки документов, нужно передать id последнего документа в предыдущем списке, в параметре afterindexkey
afterIndexKey = None 
while True:
    response = request_data(afterIndexKey )
    afterIndexKey = process_documents(response) # возвращаем последний IndexKey, если это не последняя запись (номер совпадает со значением в поле total)
    if afterIndexKey is None: # если None - прерываем цикл
        break
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы