当前位置: 首页 > 知识库问答 >
问题:

NodeJS路由器负载过大

谷梁楷
2023-03-14

我正在我的nodejs应用程序中创建restendpoint,如下所示:

在我的服务器上。我有以下代码:

var express = require('express');
var app = express();
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ limit: '50mb', extended: true }));
app.use(require('./routes/APIRoutes'));

我还尝试了下面的代码,而不是像在潜在重复问题上建议的那样使用express.json和expres.urlencoded。

var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
app.use(require('./routes/APIRoutes'));

在我的APIRoutes文件中,我有以下代码:

/* --- INIT --- */
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
router.use(bodyParser.json({ limit: '50mb' }));
router.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));

var urlencodedParser = bodyParser.urlencoded({ limit: '50mb', extended: true });

router.post('...', urlencodedParser, function (req, res) {
...
});

我尝试了不同的组合和订单来设置更高的限制。但是目前每次我发送2kb的有效载荷,我都会得到一个413“(有效载荷太大)”的错误。

有什么帮助设置限制的正确位置吗?

共有3个答案

宋飞文
2023-03-14

这对我有用

this.express.use(bodyParser.json({ limit: '50mb' }));
this.express.use(bodyParser.urlencoded({ limit: "50mb" ,extended: true, parameterLimit: 50000 }));
束志业
2023-03-14

如果您使用的是最新版本的Express,您可以直接在Express中使用此选项。

    let express = require('express');

    let app = express();

    app.use(express.json({limit: '50mb', extended: true}));
    app.use(express.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));

请注意,这只适用于与body Parser捆绑的Express版本(body Parser在4.16.0版本中被添加回Express

许寒
2023-03-14

我在一个未被接受的答案中找到了我的问题的解决方案。我必须添加参数限制,这样我的代码就变成了:

var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true, parameterLimit: 50000 }));

添加后,它工作了!

我还可以从APIRoutes中删除代码。js

router.use(bodyParser.json({ limit: '50mb' }));
router.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
 类似资料:
  • 查看OpenShift HA代理或Traefik项目:https://docs.traefik.io/.我可以看到Traefik入口控制器部署为DaemonSet。它可以使用虚拟主机将流量路由到正确的服务/endpoint。 假设我有一个包含几个节点的Kubernetes集群。我如何避免单点故障? 我应该在我的节点前面有一个负载平衡器(或DNS负载平衡)吗? 如果是,这是否意味着: 负载均衡器会将

  • 我有AngularJs ui路由器在我的应用程序。我需要加载js文件基于我的状态。 当主控状态加载时,headerController、homeController和footerController具有不同的js文件。我们需要加载控制器js文件。是否可以通过UI路由器?

  • 问题内容: 我正在使用Express 4在我的后端托管AngularJS应用,而Nginx作为前端服务器。但是html5模式似乎不起作用,因为当我尝试通过浏览器输入页面链接(例如)时,我将收到Cannot / GET错误。我需要为Express / Nginx做任何路由配置吗?这是我的配置代码: 快递4: AngularJS: Nginx: 问题答案: 我假设您使用的是“单页”角度应用程序,因此一

  • 路由在微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,并将/api/shop映射到商店服务。Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。 Netflix使用Zuul进行以下操作: 认证 洞察 压力测试 金丝雀测试 动态路由 服务迁移 负载脱落 安全 静态响应处理 主动/主动流量管理 Zuul的规则引擎允许基本上写任何JV

  • 我们正在使用Spring Cloud Stream v2。2带有Kafka和Avro(本机编码器/解码器)。我们正在尝试根据负载的条件使用基于内容的路由。据我所知,根据Spring Cloud Stream文档,基于内容的路由只能在标头上实现,因为负载到达条件时没有经过类型转换过程。因此,除非条件基于字节格式,否则它将无法按预期工作。但是,我知道,当在本机模式下使用Avro时,会跳过消息头,并且不

  • kubernetes集群与api服务器(https://192.168.0.10:6443) 想法: 从我的笔记本电脑,我想运行kubectl,指向负载均衡器,在那里牧师代理将把我重定向到api服务器。 步骤: -我将kubeconfig(笔记本电脑上)文件中的服务器ip更改为LB的ip:https://192.168.0.10:6443是http://10.10.0.2:8080/ -我这样配置