отправлять большие данные в формате JSON после запроса в формате Redux - PullRequest
0 голосов
/ 29 июня 2018

Мне нужно отправить большие очень большие данные JSON в запросе пост. Я получаю 413 ответов после установки лимита JSON в 200 МБ для bodyperser. Я использую nodejs на сервере и реагирую и перевожу на интерфейс

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Файл app.js:

'use strict';
let express = require('express');
// let server = require('http').Server(app);
const app = express();
let createError = require('http-errors');
let path = require('path');
let cookieParser = require('cookie-parser');
let logger = require('morgan');
let bodyParser = require('body-parser');

let indexRouter = require('./routes/index');
let apiRouter = require('./routes/api');

require('./mongo_configuration/mongo')();
require('./mongo_models/index');
// app.use(express.static('public'));


app.use(logger('dev'));
app.use(express.json());

// app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());


app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'src')));


app.set('view engine', 'html');
app.engine('html', require('ejs').renderFile);
app.set('views', __dirname + '/public');

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


app.use(bodyParser.urlencoded({
    parameterLimit: 100000,
    limit: '200mb',
    extended: true
}));


app.use('/', indexRouter);
app.use('/api',apiRouter);

app.use(function(req, res, next) {
    next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};

    // render the error page
    res.status(err.status || 500);
    res.render('error');
});


app.listen(3000, function(){
    console.log('App web-server listening on port 3000');
    require('./scripts/index');
});
0 голосов
/ 29 июня 2018

В вашем коде вы дважды вызывали bodyParser.json () и bodyParser.urlencoded (), проблема в том, что тот, который имеет ограничение, следует за вызовами без опций, по умолчанию 200 КБ. Поэтому, когда вы отправляете POST-файл размером более 200 КБ, эта ошибка будет выдана, поскольку первый анализатор не перейдет к следующему промежуточному программному обеспечению.

Вы не должны вызывать bodyParser [метод] дважды.

Вы можете изменить свои свойства bodyParser, как показано ниже

app.use(bodyParser.json({limit:'200mb'}));
app.use(bodyParser.urlencoded({
    parameterLimit: 100000,
    limit: '200mb',
    extended: true
}));
...