Я обнаружил проблему при попытке использовать экспресс-парсер тела с koa-body

Я использую архитектуру шлюза API, API шлюза закодирован в экспрессе, а микросервис, который я вызываю, создается с использованием Koa.

Я пытаюсь отправить несколько файлов, закодированных в base64, на бэкэнд, без парсера тела на шлюзе, я получаю ошибку Payload Too Large 413, поэтому после ее добавления я получаю эту ошибку: Error: MultipartParser.end(): stream ended unexpectedly: state = START_BOUNDARY. Если я удалю тело коа, я снова получаю сообщение об ошибке Payload Too Large 413. Я подозревал, что ошибка, вероятно, связана с использованием body-parser с koa-body. Запрос от внешнего интерфейса отправляется через axios POST, а значения находятся в FormData.

Это код koa-body в микросервисе:

.use(
      koaBody({
        multipart: true,
        formidable: {
          maxFieldsSize: 50 * 1024 * 1024,
          maxFileSize: 50 * 1024 * 1024
        }
      })
    )

РЕДАКТИРОВАТЬ: Возможно, это не ясно из вопроса, но файлы отправляются не как файлы, а как строки Base64. EDIT2: после некоторых исследований я обнаружил, что проблема может быть даже в прокси-сервере API шлюза, который, как я обнаружил, имел некоторые проблемы с обработкой составных форм (https://github.com/villadora/express-http-proxy/issues/127).


person salah-chaouch    schedule 13.09.2019    source источник


Ответы (1)


Из body-parser документации:

Это не обрабатывает составные тела из-за их сложной и, как правило, большой природы. Для составных тел вас могут заинтересовать следующие модули:

(курсив их)

person T.J. Crowder    schedule 13.09.2019
comment
Извините, я должен был уточнить больше, я отправляю их как строки, файлы, в частности строки base64, которые, вероятно, не считаются составными телами, и я использовал connect-busboy после прочтения документации, и это всегда создавало у меня проблему Слишком большая полезная нагрузка, даже после изменения ее пределов. - person salah-chaouch; 13.09.2019