Сопоставить столько параметров маршрута URL, сколько возможно с path-to-regexp? - PullRequest
1 голос
/ 21 апреля 2020

Я хотел бы, чтобы средство соответствовало как можно большему числу параметров URL. Пример

/teams/:teamID/players/:playerID/seasons/:seasonID/detail

будет соответствовать любому значению, начиная с / команды, и совпадению с таким количеством параметров, вплоть до / подробности (и только до)

/Giants => { teamID: null, playerID: null, seasonID: null }
/Giants/123 => { teamID: 123, playerID: null, seasonID: null }
/Giants/123/players/ => same as above
/Giants/123/players/456/seasons/2020/detail => { teamId: 123, playerID: 456, seasonID: 2020 }
/Giants/123/players/446/seasons/2020 => same as above

и не совпадают

/Giants/123/players/456/seasons/2020/detail/12345

Я использую path-to-regexp .

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Я нашел хорошую библиотеку, которая делает именно то, что мне нужно, очень легкая и использует хорошо проверенные фрагменты Backbone. js для сопоставления с образцом:

https://github.com/HenrikJoreteg/feather-route-matcher

Примеры:

pattern: '/users/:id' 
url: '/something-else' 
extracted params: nothing, because it won't match

pattern: '/users/:id' 
url: '/users/scrooge-mc-duck' 
extracted params: {id: 'scrooge-mc-duck'}

pattern: '/users/:id' 
url: '/users/47' 
extracted params: {id: '47'}

pattern: '/schools/:schoolId/teachers/:teacherId' 
url: '/schools/richland/teachers/47' 
extracted params: {schoolId: 'richland', teacherId: '47'}

Это дало мне именно то, что я хотел и нуждался

0 голосов
/ 21 апреля 2020

Если есть возможность не использовать регулярное выражение, вы можете разделить URL-адрес на массив, используя / в качестве разделителя. Получить каждый элемент массива, который идет после team, вплоть до details.

...