Слишком большая полезная нагрузка NodeJS Router - PullRequest
0 голосов
/ 25 августа 2018

Я создаю конечные точки отдыха в моем приложении nodejs следующим образом:

В моем server.js у меня есть следующий код:

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) {
...
});

Я пробовал разные комбинации изаказы на установку лимита выше.Но в настоящее время каждый раз, когда я отправляю полезную нагрузку в 2 КБ, я получаю сообщение об ошибке 413 («Слишком большая полезная нагрузка)».

Любая помощь, какое правильное местоположение для установки предела?

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Пробовал смотреть онлайн последние пару часов и не нашел решения для 413 Полезная нагрузка

Оказывается в urlencoded.js в модуле body-parser есть дополнительные опции, которые заботятся определы.

Такие параметры, как parameterLimit и arrayLimit - это элементы, которые необходимо изменить, если размер вашего параметра или массива превышает предел, предоставленный по умолчанию (который равен 100 для размера массива).

0 голосов
/ 26 августа 2018

Я нашел решение для моей проблемы в одном из неприемлемых ответов предложенного дубликата Т. К. Джона. Мне пришлось добавить ограничение параметра, чтобы мой код стал:

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 }));
...