簡體   English   中英

使用 path-to-regexp 匹配盡可能多的 URL 路由參數?

[英]Match as many URL route parameters as possible with path-to-regexp?

我想要一種方法來匹配盡可能多的 URL 參數示例

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

將匹配以 /teams 開頭的任何內容並匹配存在的盡可能多的參數,直到 /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

如果有可能不使用正則表達式,您可以使用/作為分隔符將 URL 拆分為一個數組。 獲取數組中的每一個元素,它一直在team之后,直到details

我找到了一個很好的庫,它完全符合我的需要,非常精簡,並使用經過良好測試的 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'}

這為我提供了我想要和需要的東西

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM