Замена для req.param(), которая устарела в Express 4

Мы переносимся с ExpressJS 3 на ExpressJS 4, и мы отметили, что следующие API-интерфейсы устарели:

req.param(fieldName)
req.param(fieldName, defaultValue)

Есть ли промежуточное программное обеспечение, которое возвращает эти API, как и другие API-интерфейсы, которые были "экстернализованы" от экспресс к независимым модулям?

Ответ 1

Хорошо, прочитав темы, приведенные в ссылках by @Ineentho, мы решили придумать следующий ответ:

https://github.com/osher/request-param

Связующее/промежуточное программное обеспечение для включения обратно API req.param(имя, по умолчанию), устаревшего в express 4

Среднее программное обеспечение не только возвращает функциональность goo'old. Он также позволяет настраивать порядок коллекций, из которых извлекаются параметры, как в качестве правила по умолчанию, так и для каждого вызова: -)

Удачи!

Ответ 2

Основываясь на экспресс-документации, мы должны использовать это как

Вкл express 3

req.param(fieldName)

Вкл express 4

req.params.fieldName

Лично я предпочитаю req.params.fieldName вместо req.param(fieldName)

Ответ 3

Почему вы хотите вернуть его? Там была причина, по которой она была устаревшей, и поэтому вы, вероятно, должны отойти от нее.

Обсуждение того, почему они обесценивают API, доступно на своем трекере проблем как # 2440.

Функция - быстрый и грязный способ получить значение параметра от req.params, req.body или req.query. Это может, конечно, вызвать проблемы в некоторых случаях, поэтому они их удаляют. См. Функцию для себя здесь.

Если вы используете функцию для параметров url, вы можете просто заменить ее на проверку req.query['smth'] or 'default':

var param_old = req.param('test', 'default');
var param_new = req.query['test'] || 'default';

(Обратите внимание, что пустая строка оценивается до false, поэтому они на самом деле не на 100%. То, что вы хотите, конечно, зависит от вас, но по большей части это не имеет значения.)