首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >swagger生成的Nodejs :错误:请求实体太大

swagger生成的Nodejs :错误:请求实体太大
EN

Stack Overflow用户
提问于 2015-12-12 08:16:32
回答 2查看 2.2K关注 0票数 9

使用editor.swagger生成的Nodejs代码,在正文中,我想发送10mb,但无法发送,我收到了这个错误:

代码语言:javascript
复制
Error: request entity too large
    at makeError (c:\apigee\dojo\nodeServer_2\node\node_modules\swagger-tools\node_modules\body-parser\node_modules\raw-body\index.js:154:15)
    at readStream (c:\apigee\dojo\nodeServer_2\node\node_modules\swagger-tools\node_modules\body-parser\node_modules\raw-body\index.js:188:15)
    at getRawBody (c:\apigee\dojo\nodeServer_2\node\node_modules\swagger-tools\node_modules\body-parser\node_modules\raw-body\index.js:95:12)
    at read (c:\apigee\dojo\nodeServer_2\node\node_modules\swagger-tools\node_modules\body-parser\lib\read.js:64:3)
    at jsonParser (c:\apigee\dojo\nodeServer_2\node\node_modules\swagger-tools\node_modules\body-parser\lib\types\json.js:116:5)
    at c:\apigee\dojo\nodeServer_2\node\node_modules\swagger-tools\middleware\swagger-metadata.js:72:9
    at urlencodedParser (c:\apigee\dojo\nodeServer_2\node\node_modules\swagger-tools\node_modules\body-parser\lib\types\urlencoded.js:91:37)
    at bodyParser (c:\apigee\dojo\nodeServer_2\node\node_modules\swagger-tools\middleware\swagger-metadata.js:68:5)
    at c:\apigee\dojo\nodeServer_2\node\node_modules\swagger-tools\middleware\swagger-metadata.js:258:5
    at c:\apigee\dojo\nodeServer_2\node\node_modules\swagger-tools\node_modules\async\lib\async.js:356:13

我已经尝试过此选项,但仍然出现相同的错误。以下是来自index.js的示例代码:

代码语言:javascript
复制
swaggerTools.initializeMiddleware(swaggerDoc, function (middleware) {
  // Interpret Swagger resources and attach metadata to request - must be first in swagger-tools middleware chain
     app.use(middleware.swaggerMetadata());
  /*app.use(middleware.swaggerMetadata(
      bodyParser.json({limit: "50mb"}),
      bodyParser.urlencoded({ limit: "50mb", extended: true })
  )
  );*/

  // Validate Swagger requests
  app.use(middleware.swaggerValidator());

  // Route validated requests to appropriate controller
  app.use(middleware.swaggerRouter(options));

  // Serve the Swagger documents and Swagger UI
  app.use(middleware.swaggerUi());

  //app.use(bodyParser.json({limit: "50mb"}));
  //app.use(bodyParser.urlencoded({ limit: "50mb", extended: true }));

  app.use(bodyParser.json({limit: 10 * 1024 * 1024}));
  app.use(bodyParser.raw({limit: 10 * 1024 * 1024}));
  app.use(bodyParser.text({limit: 10 * 1024 * 1024}));
  app.use(bodyParser.urlencoded({limit: 10 * 1024 * 1024, extended: true}));
EN

回答 2

Stack Overflow用户

发布于 2018-05-08 18:04:29

根据https://github.com/apigee-127/swagger-tools/issues/248中指定的说明,您需要在初始化swagger之前配置bodyParser,如下所示:

代码语言:javascript
复制
app.use(bodyParser.json({limit: 10 * 1024 * 1024}));
app.use(bodyParser.raw({limit: 10 * 1024 * 1024}));

app.use(require("./router")); // in this sample, this is where you configure your Swagger middleware

这样,Swagger将使用您配置的bodyParser和您设置的限制。我正在解决同样的问题,这个解决了它。

票数 5
EN

Stack Overflow用户

发布于 2016-09-02 18:57:58

这是来自对请求正文进行解码的body-parser的错误。它有一个大小限制选项:

https://github.com/expressjs/body-parser#limit

swagger-工具在不修改请求大小限制的情况下使用它,因此默认限制为100kb:

https://github.com/apigee-127/swagger-tools/blob/master/middleware/swagger-metadata.js#L48

添加已配置的body-parser不会影响swagger-tools的内部调用。这个问题应该通过swagger-tools来解决。否则你只能破解上面的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34234666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档