Где ввод JSON в экспрессе без body-parser? - PullRequest
0 голосов
/ 01 сентября 2018

Я знаю о body-parser и что он делает. Мне интересно знать, где данные запрашиваются при использовании express. В каком формате он существует до body-parser разбора ввода.

// parse urlencoded types to JSON
app.use(bodyParser.urlencoded({
    extended: true
}));

// parse various different custom JSON types as JSON
app.use(bodyParser.json({ type: 'application/*+json' }));

// parse some custom thing into a Buffer
app.use(bodyParser.raw({ type: 'application/vnd.custom-type' }));

// parse an HTML body into a string
app.use(bodyParser.text({ type: 'text/html' }));

Где будут данные, если ни один из них не используется? В каком формате это будет доступно?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

POST-запрос делается по определенному пути (с необязательными параметрами запроса). В теле запроса находятся данные POST. Express по умолчанию читает заголовки запроса, но не читает тело запроса. Задача связующего компонента body-parser - читать и анализировать тело запроса, чтобы его данные были легко доступны для вас.

Где будут данные, если ни один из них не используется? В каком формате это будет доступно?

Итак, если у вас не установлено промежуточное программное обеспечение body-parser или версия промежуточного программного обеспечения, соответствующая формату данных, будет находиться в потоке входящих запросов, ожидая читать. Параметр req для запроса является читаемым потоком. Данные будут ожидать чтения в этом потоке.

Формат будет таким, каким будет заголовок типа содержимого в запросе, будет формат. Для публикации в классической форме обычно это application/x-www-form-urlencoded, но для него можно установить другие типы, например application/json. Запрашивающий сам решает, какой тип содержимого устанавливать, а затем он должен кодировать данные в теле в соответствии с этим стандартом.

Для таких вещей, как загрузка файлов, могут использоваться другие типы контента, такие как multipart/form-data.

0 голосов
/ 01 сентября 2018

Это довольно подробно описано в документации Node .

Объект запроса, который передается обработчику, реализует интерфейс ReadableStream. Этот поток можно прослушивать или передавать в другом месте, как и любой другой поток. Мы можем получить данные прямо из потока, прослушивая события «data» и «end» потока.

Express действительно применяет расширения к возможностям HTTP-сервера Node.js, включая расширение собственных объектов Request и Response. Следовательно, вы также можете обрабатывать экспресс-запрос как собственный объект запроса, а также

...