Estoy creando puntos finales de descanso en mi aplicación nodejs de la siguiente manera:
En mi server.js tengo el siguiente código:
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'));También probé el siguiente código en lugar de usar express.json y expres.urlencoded como se sugiere en la posible pregunta duplicada.
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'));En mi archivo APIRoutes tengo el siguiente código:
/* --- 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) { ... });Probé diferentes combinaciones y órdenes para establecer el límite más alto. Pero actualmente, cada vez que envío una carga útil de 2 kb, recibo un error 413 "(Carga útil demasiado grande)".
¿Alguna ayuda sobre cuál es la ubicación correcta para establecer el límite?
Encontré la solución a mi problema en una de las respuestas no aceptadas del duplicado sugerido de TKJohn. Tuve que agregar el límite de parámetros para que mi código se convirtiera en:
var app = express(); var bodyParser = require('body-parser'); app.use(bodyParser.json({ limit: '50mb' })); app.use(bodyParser.urlencoded({ limit: '50mb', extended: true, parameterLimit: 50000 }));¡Después de la adición funcionó!
También pude eliminar el código de APIRoutes.js
router.use(bodyParser.json({ limit: '50mb' })); router.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));Puede usar esto directamente en express si está usando la última versión de 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})); Tenga en cuenta que esto solo funcionará con las versiones express incluidas con bodyParser ( bodyParser se agregó nuevamente a express en la versión 4.16.0 )
esto funcionó para mí
this.express.use(bodyParser.json({ limit: '50mb' })); this.express.use(bodyParser.urlencoded({ limit: "50mb" ,extended: true, parameterLimit: 50000 }));