Экспресс приложение получает шаблон выдает "Cannot GET" - PullRequest
0 голосов
/ 05 июня 2019

У меня есть следующий тип страниц:

  1. root (/)
  2. сегодняшняя глава (/929 ИЛИ /929/), которая в конечном итоге перенаправляет на /929/<CHAPTER>, где <CHAPTER> - натуральное число от 1 до 929
  3. глав (/929/<CHAPTER> ИЛИ /929/<CHAPTER>/), где <CHAPTER> - натуральное число от 1 до 929
  4. статьи о главах (/929/<CHAPTER>/<ARTICLE_ID> ИЛИ /929/<CHAPTER>/<ARTICLE_ID>/), где <CHAPTER> - натуральное число от 1 до 929 и натуральное число, например 1,2 ... 99999999

1-3 типа страниц работают нормально. Четвертый бросок:

Не удается получить / 929/233/3027

Вот код:

app.get("/", rootMiddleware);
app.get("/929[/]{0,1}", todaysChapterMiddleware);
app.get("/929/:chapter(([1-9]|[1-9][0-9]|[1-8][0-9]{2}|9[01][0-9]|92[0-9]))[/]{0,1}", chapterMiddleware);
app.get("/929/:chapter(([1-9]|[1-9][0-9]|[1-8][0-9]{2}|9[01][0-9]|92[0-9]))/:articleId((\d+))[/]{0,1}", articleMiddleware);

Ответы [ 3 ]

1 голос
/ 05 июня 2019

Поскольку регулярное выражение обычно является частью литеральной строки, обязательно экранируйте все символы \ с дополнительной обратной косой чертой, например \\ d +.

Таким образом, правильный четвертый маршрут должен быть:

app.get("/929/:chapter(([1-9]|[1-9][0-9]|[1-8][0-9]{2}|9[01][0-9]|92[0-9]))/:articleId((\\d+))[/]{0,1}", articleMiddleware);
1 голос
/ 05 июня 2019

добавить \ чтобы избежать \

так

от

app.get("/929/:chapter(([1-9]|[1-9][0-9]|[1-8][0-9]{2}|9[01][0-9]|92[0-9]))/:articleId((\d+))[/]{0,1}", articleMiddleware);

до

app.get("/929/:chapter(([1-9]|[1-9][0-9]|[1-8][0-9]{2}|9[01][0-9]|92[0-9]))/:articleId((\\d+))[/]{0,1}", articleMiddleware);
0 голосов
/ 05 июня 2019

В основном файле app.js:

app.use("/",routesfile);

В файле маршрутов:

router.get('/929/<CHAPTER>',controller file)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...