【问题标题】:Error "request too large (413)" when trying to upload a PDF file to OneNote尝试将 PDF 文件上传到 OneNote 时出现“请求过大 (413)”错误
【发布时间】:2019-04-09 11:52:33
【问题描述】:

我正在尝试使用 Microsoft Graph REST API (Objective-C) 在 OneNote 中创建新页面。这些新页面应包含 PDF 文档作为附件。

POST 操作会成功处理大约 4MB 以下的 PDF 文件。但是,超过 4MB 的文件的操作会失败,并显示错误消息 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


微软在documentation for Graph and OneNote中声明:

  • POST 总大小限制约为 70 MB,包括图像、文件和其他数据。实际限制受下游编码的影响,因此没有固定的字节数限制。超出限制的请求可能会产生不可靠的结果。
  • 每个数据部分的限制为 25 MB,包括部分标头。 Microsoft Graph 拒绝超出限制的数据部分。

我在 OneNote 的 Microsoft Graph 文档中找不到任何 4MB 的 POST 请求限制。我当前的问题有什么解决方法吗?

【问题讨论】:

    标签: objective-c microsoft-graph-api onenote onenote-api


    【解决方案1】:

    简短的回答是该文档不正确。更长的答案需要 Graph 本身的一些背景知识。

    Graph 是一个 API 聚合器。它接收传入的请求,将它们路由到一个或多个底层 API,然后对响应进行规范化,以便最终开发人员在端点之间获得一致的结果。

    在这种情况下,底层 API 是 OneNote REST API。文档中提到的限制在 OneNote API 方面是准确的,但由于此请求由 Graph 处理,因此在该请求被路由到底层 API 之前,您将达到 Graph 本身的较小的 4 MB 限制。

    将原始文档移植到 Graph 时,很可能无意中遗漏了文档错误。我已经提交了documentation issue,以便可以更正。

    【讨论】:

    • 感谢您的回答。我正在从 ADAL 过渡到 MSAL + Graph。这个 4 MB 的限制是否有解决方法?
    • 我们正在将我们的应用程序“Genius Scan”从“旧”OneNote API 切换到 MSGraph,主要是为了能够使用 MSAL(github.com/AzureAD/microsoft-authentication-library-for-objc,相对于已弃用的 ADAL)进行更简单的身份验证。但如果这意味着我们将无法发送更大的有效载荷,那么这对我们来说就是个问题。你有什么建议吗?我们可以将 OneNote REST API 与 MSAL 身份验证库一起使用吗?
    猜你喜欢
    • 2021-12-28
    • 2017-10-12
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多