Выбор ответа Junior HTTP-сервер, Express, NestJS обновлено
req.body равен undefined
Вопрос
Клиент шлёт POST с JSON и заголовком Content-Type: application/json, а в Express-обработчике req.body это undefined. Самая вероятная причина?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Не подключён app.use(express.json()) до роута. Тело запроса это поток, Express сам его не читает.
Варианты ответа
- Не подключён
app.use(express.json())до роутаправильный ответ - Клиент должен слать
text/plain - Express не поддерживает JSON без дополнительного пакета
- POST-запросы в Express читаются через
req.query
Разбор
Тело запроса это поток, Express сам его не читает. Middleware express.json() читает поток, парсит JSON и кладёт результат в req.body. Подключить его нужно до роутов.
text/plainJSON-парсер как раз проигнорирует.- Парсер JSON встроен в Express с версии 4.16, отдельный body-parser не нужен.
req.queryэто параметры строки запроса, а не тело.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.