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

问题描述 投票:0回答:3

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

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

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

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

我缺少什么来完成此任务,这样我就不会在后端不断收到

exceeds 4MB. This will cause the request to fail in a future version
错误消息?

next.js
3个回答
8
投票

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',
  },
}

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

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


5
投票

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

来自文档

为什么会出现这个错误

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

可能的修复方法

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

所以基本上你还是会受到 4 MB 的限制,即使你进行了其他设置。

您可以尝试使用此提示来避免 5 MB 限制

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


0
投票

我可能会迟到,但我尝试了一切,最后,我只是将 Express.js 转移到该特定功能。

我正在构建一个电子商务应用程序,客户希望我允许用户上传最大大小为 25MB 的视频,并且我正在使用服务器操作。我尝试了一切,但最后,我转向了 Express.js。我花了一段时间来设置验证,但我认为这是最后的选择。

如果我遗漏了什么,请纠正我。

谢谢你。

© www.soinside.com 2019 - 2024. All rights reserved.