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

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

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

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

javascriptapp.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');
  }
});

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

javascriptapp.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');
  }
});
Задание 1

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

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

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

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

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

javascriptapp.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/
});