Ошибка «запрос слишком большой (413)» при попытке загрузить файл PDF в OneNote - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь создать новые страницы в OneNote, используя Microsoft Graph REST API (Objective-C). Эти новые страницы должны содержать PDF-документ в виде вложения.

Операции POST успешно выполняются с файлами PDF размером ~ 4 МБ. Однако операции с файлами размером более 4 МБ завершаются с ошибкой request too large (413) и следующим ответом:

{
  "error": {
    "code": "BadRequest",
    "message": "Maximum request length exceeded.",
    "innerError": {
      "request-id": "269c663c-9289-47cc-a833-d471b7b867f6",
      "date": "2019-04-09T09:35:49"
    }
  }
}

Конечная точка, которая используется: https://graph.microsoft.com/v1.0/me/onenote/sections/XXX/pages


Microsoft заявляет в документации для Graph и OneNote :

  • Общий предел размера POST составляет ~ 70 МБ, включая изображения, файлы и другие данные. Фактическое ограничение зависит от кодирования в нисходящем направлении, поэтому не существует фиксированного ограничения на количество байтов. Запросы, превышающие лимит, могут привести к ненадежным результатам.
  • Предел для каждой части данных составляет 25 МБ, включая заголовки частей. Части данных, которые превышают лимит, отклоняются Microsoft Graph.

Не удалось найти ограничение в 4 МБ для запросов POST в документации Microsoft Graph для OneNote. Есть ли обходной путь для моей текущей проблемы?

1 Ответ

1 голос
/ 09 апреля 2019

Краткий ответ: эта документация неверна. Более длинный ответ требует небольшого знания самого графика.

Graph - это API-агрегатор. Он принимает входящие запросы, направляет их в один или несколько базовых API, а затем нормализует ответы, чтобы конечный разработчик получал согласованные результаты по конечным точкам.

В этом случае базовым API является OneNote REST API . Ограничения, упомянутые в документах, точны с точки зрения API OneNote, но поскольку этот запрос обрабатывается Graph, вы достигаете меньшего предела в 4 МБ для самого Graph, прежде чем этот запрос будет перенаправлен в базовый API.

Скорее всего, ошибка документации была непреднамеренно пропущена, когда исходные документы были перенесены в Graph. Я подал проблему с документацией , чтобы ее можно было исправить.

...