我们正在使用 expressJwt 库,我希望能够排除以下路由api/items/:id
的GET
,但不包括任何看起来像api/items/:id/special-action
的路由。
到目前为止,我只能排除所有具有:id
的路由。
以下是我们如何实现排除GET
具有:id
的路线。
this.app.use(expressJwt({ secret: secrets.JWT }).unless({
path: [
...
{ url: //api/items/(.)/, methods: ['GET'] },
...
]
});
我已经尝试过{ url: //api/items/(.)//, methods: ['GET'] }
但它与任何路由都不匹配,因此没有排除:id
路由。
我使用正则表达式的方式有些不对劲,但我很难看到它。 我是否需要更改(.)
以不完全匹配? 我想它可能与尾随斜杠匹配
您可以使用
/^/api/items/([^/]*)$/
[^/]*
否定的字符类匹配 0 个或多个/
个字符,^
/$
锚点确保将针对整个字符串尝试该模式。
请参阅正则表达式演示。
详
^
- 字符串锚点的开始/api/items/
- 匹配文本/api/items/
子字符串([^/]*)
- 捕获组 1:除/
以外的任何 0+ 字符。$
- 字符串锚点的结尾。 请注意,如果要确保[^/]*
之后没有/
,请在末尾添加字符串锚点的$
末尾。