We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
根据网上随处可查到的资料,HTTP 规范没有强制限制 POST 请求内容的大小,一般是由浏览器或者服务端去限制。
最近在写 NestJS 时,遇到了一个报错 request entity too large 显然,字面上看,就是请求的 body 太大,超过了 NestJS 的限制
request entity too large
我们使用的是默认的底层,也就是 express ,因此这个是由 express 那边限制的 从 express 官方文档 也可以看到,默认限制是 100kb
根据上述文档,我们只需要能修改那个 limit 配置即可
limit
我们在 NestJS 项目的 main.ts 中加入以下代码:
app.use(express.json({ limit: '1mb' }))
这行代码可以成功运行,问题似乎也解决了。
但是这边有个隐藏的坑:
当我们使用 nest-cli 初始化项目后,可以看到在 package.json 中有 @types/express 这个包,但没有 express 本体。 由于 NestJS 底层默认使用 express ,因此 node_modules 里一般是会存在 express 包的。 因此我们用 import * as express from 'express' 引入使用 express 的功能,也是能正常运行的。
package.json
@types/express
node_modules
import * as express from 'express'
然而,在代码中使用 package.json 中没有声明的依赖,肯定是有风险的。 如果我们只使用 express 的 TypeScript 类型声明,那没问题,上述这个机制反而方便了开发。 但是我们使用了具体的功能,假设以后整个仓库换了 npm 包管理工具, node_modules 里面的依赖不再是扁平的,那代码就无法运行了。
因此,更保险的做法,我们可以只引入 express 底层用的 body-parser 库:
import * as bodyParser from 'body-parser' app.use(bodyParser.json({ limit: '1mb' }))
当然,我们也可以直接在我们的依赖包里加上 express
其实最好的做法还是 NestJS 官方提供个配置供修改
The text was updated successfully, but these errors were encountered:
https://docs.nestjs.com/faq/raw-body#body-parser-size-limit NestJS 已内置
Sorry, something went wrong.
No branches or pull requests
关于 POST 请求的大小限制
根据网上随处可查到的资料,HTTP 规范没有强制限制 POST 请求内容的大小,一般是由浏览器或者服务端去限制。
NestJS 对 POST 请求的限制
最近在写 NestJS 时,遇到了一个报错
request entity too large
显然,字面上看,就是请求的 body 太大,超过了 NestJS 的限制
我们使用的是默认的底层,也就是 express ,因此这个是由 express 那边限制的
从 express 官方文档 也可以看到,默认限制是 100kb
修改限制
根据上述文档,我们只需要能修改那个
limit
配置即可我们在 NestJS 项目的 main.ts 中加入以下代码:
这行代码可以成功运行,问题似乎也解决了。
但是这边有个隐藏的坑:
当我们使用 nest-cli 初始化项目后,可以看到在
package.json
中有@types/express
这个包,但没有 express 本体。由于 NestJS 底层默认使用 express ,因此
node_modules
里一般是会存在 express 包的。因此我们用
import * as express from 'express'
引入使用 express 的功能,也是能正常运行的。然而,在代码中使用
package.json
中没有声明的依赖,肯定是有风险的。如果我们只使用 express 的 TypeScript 类型声明,那没问题,上述这个机制反而方便了开发。
但是我们使用了具体的功能,假设以后整个仓库换了 npm 包管理工具,
node_modules
里面的依赖不再是扁平的,那代码就无法运行了。做法1
因此,更保险的做法,我们可以只引入 express 底层用的 body-parser 库:
做法2
当然,我们也可以直接在我们的依赖包里加上 express
预想
其实最好的做法还是 NestJS 官方提供个配置供修改
The text was updated successfully, but these errors were encountered: