В чем разница между bodyParser узла и промежуточным программным обеспечением экспресс-кода urlen? - PullRequest
0 голосов
/ 15 апреля 2019

После прочтения обоих я все еще не могу понять, могут ли быть языковые различия, но, пожалуйста, помогите уточнить.

express.urlencoded()

Возвращает промежуточное ПО, которое выполняет только синтаксический анализurlencoded тела и только смотрит на запросы, где заголовок Content-Type соответствует опции типа.Этот синтаксический анализатор принимает только кодировку тела UTF-8 и поддерживает автоматическое наложение кодировок gzip и deflate.

, а также

и body-parser middleware

Анализируйте входящие тела запросов в промежуточном программном обеспечении перед вашими обработчиками, доступными в свойстве req.body.

Я понимаю, что express.urlencoded основан на Nodejs body-parser.и на обеих страницах

https://expressjs.com/en/api.html#express.urlencoded

и

https://expressjs.com/en/resources/middleware/body-parser.html

даже говорится одно и то же предупреждение:

Поскольку форма req.body основана на вводе, управляемом пользователем, все свойства и значения в этом объекте не заслуживают доверия и должны быть проверены перед доверием.Например, req.body.foo.toString () может завершиться с ошибкой несколькими способами, например, foo может отсутствовать или не может быть строкой, а toString не может быть функцией, а вместо этого строкой или другим пользовательским вводом.

, но в итоге оба дают мне req.body с параметрами, отправляемыми в объекте body запросов.так почему я должен использовать body-parser (который я должен установить отдельно) вместо того, чтобы всегда использовать express.urlencoded()

Я знаю, что это не проблема кода, но я заранее благодарен всем, кто может перечислить доОсновные отличия.

1 Ответ

1 голос
/ 15 апреля 2019

так почему я должен использовать body-parser (который я должен установить отдельно) вместо того, чтобы всегда использовать express.urlencoded ()

По той простой причине, что она не была доступна в более старой версии Express

Это промежуточное ПО доступно в Express v4.16.0 и более поздних версиях.

Если вы используете последнюю версию, то для этого почти нет причин.

body-parser предоставляет несколько дополнительных утилит, таких как bodyParser.raw([options]) или bodyParser.text([options]), которые почти никто не использует (никогда не видел, используй один сам).

...