@romaro

Как применить middleware внутри другой middleware?

Юзайю экспресс и хочу использовать разные парсеры в зависимости от MIME-типа. Но не понимаю, как мне применить этот парсер внутри middleware. Пробую с case:multipart и ожидаю, что в текущий экземпляр экспресса добавится новый роут и применится после выхода из middleware по методу next(). Почему Экспресс не применяет новый обработчик?

import express from 'express';
import multer from 'multer';

const formParser = multer();
const jsonParser = express.json();

export default class {
    get handler() {
        return (req, res, next) => {
            console.log('Боди-парсер');

            switch (req.is(['urlencoded', 'json', 'multipart'])) {
                case 'urlencoded':
                    // parse urlencoded body
                    throw new Error('implement urlencoded body parsing')
                case 'json':
                    // parse json body
                    throw new Error('implement json body parsing')
                case 'multipart':
                    // parse multipart body
                    //throw new Error('implement multipart body parsing')
                    req.app.post('*', formParser.none());
                    next();
                    break;
                default:
                    // 415 error code
                    res.statusCode = 415
                    res.end()
                    break
            }
        }
    }
}
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы