# Параметры маршрутов и 404 ошибка в Express

Пусть у нас есть маршрут, параметром которого будет некоторое число:

`app.get('/test/:num/', function(req, res) { res.send(req.params.num); });`

Давайте разрешим только адреса с числами от `1` до `9`, а для остальных адресов отдадим `404` ошибку:

`app.get('/test/:num/', function(req, res) { let num = req.params.num; if (num >= 1 && num <= 9) { res.send('your num: ' + num); } else { res.status(404).send('not found'); } });`

А теперь давайте проверим, введено число или нет, воспользовавшись регулярным выражением:

`app.get('/test/:num/', function(req, res) { let num = req.params.num; if (/\d+/.test(num)) { res.send('your num: ' + num); } else { res.status(404).send('not found'); } });`

Сделайте маршрут с некоторым параметром. Реализуйте проверку параметра на это, что это дата в формате год-месяц-день. Верните `404`, если это не так.

## Общая `404` ошибка

В приведенном выше коде получится, что если адрес начинается с `/test/` и дальше не число, то в браузер улетит `404` ошибка. Но в браузер может быть введен и произвольный урл, не начинающийся с `/test/`. Такие случаи мы должны обработать через `app.use`:

`app.use(function(req, res) { res.status(404).send('not found'); });`

Полный код будет выглядеть следующим образом:

`app.get('/test/:num/', function(req, res) { let num = req.params.num; if (/\d+/.test(num)) { res.send('your num: ' + num); } else { res.status(404).send('not found'); // начало с /test/, но потом не число } }); app.use(function(req, res) { res.status(404).send('not found'); // адреса, не начинающиеся с /test/ });`
← →
↑