如何覆盖 4mb API 路由正文大小限制?

Jay*_*Jay 7 next.js

我尝试了多种方法来覆盖 API 路由主体大小限制。

https://nextjs.org/docs/messages/api-routes-body-size-limit

  • 设置自定义服务器(基本 Express 应用程序)
  • 在相关路由上传递 bodyParser sizeLimit 的自定义配置。
export const config = {
  api: {
    bodyParser: {
      sizeLimit: '10mb',
    },
  },
}
Run Code Online (Sandbox Code Playgroud)

我有一些大小超过 7mb 的数据库响应,并且希望能够支持这么大的响应。我部署到 AWS 而不是 Vercel,并且我没有使用无服务器功能。

为了完成此任务,我缺少什么,这样我就不会exceeds 4MB. This will cause the request to fail in a future version在后端不断收到该错误消息?

Zah*_*odi 7

Next.js 文档https://nextjs.org/docs/messages/api-routes-response-size-limit

添加功能https://github.com/vercel/next.js/pull/34700

export const config = {
  api: {
    responseLimit: false,
    // responseLimit: '8mb',
  },
}
Run Code Online (Sandbox Code Playgroud)

警告! 为了确保功能正常,必须从 API 页面导出配置对象,而不是简单地在 next.config.js 文件中设置为属性。

笔记。如果您不在无服务器环境中使用 Next.js,并且了解不使用 CDN 或专用媒体主机对性能的影响,则可以在 API 路由中将此限制设置为 false。

  • 警告!它不是“next.config.js”属性!`config` 应该从 api 页面导出! (7认同)

Nic*_*s D 6

这不是因为 Vercel / AWS。不幸的是,这是 Next.js 设计的。

来自文档

为什么会出现这个错误

API 路由旨在快速响应,而不是支持响应大量数据。响应的最大大小为 4 MB。

可能的修复方法

将您的 API 路由响应限制为小于 4 MB。如果您需要支持向客户端发送大文件,则应考虑为这些资产使用专用媒体主机。请参阅下面的链接以获取建议。

因此,即使您进行了其他设置,基本上您仍会受到 4 MB 限制。

您可以尝试使用此技巧来避免 5 MB 的限制

我的提示是,如果您确实需要支持那么大的响应,也许您可​​以尝试构建自己的 API。快递是一个不错的选择。您可以对自己的后端架构进行细粒度的控制。