带有可选部分的 WebAPI 路由正则表达式
WebAPI route regex with optional parts
我想将 WebAPI 操作方法映射到格式为 api/v2/l8n/{cultureCode}
的网址,但为了避免与其他方法发生路由冲突,我需要将 cultureCode
参数限制为仅与正则表达式匹配的值^\w{2}(?:-\w{2})?$
,即 sv
和 en-GB
,但不是 hello
。
我在控制器上有一个 RoutePrefix
属性负责 api/v2/i8n
,所以我尝试将操作映射到
[Route(@"{cultureString:regex(^\w{2}(?:-\w{2})?$)")]
但随后在配置时抛出一个错误,指出 {cultureString:regex(^\w{2
是一个错误的路由值。我尝试用 \w\w
替换 \w{2}
以及删除 @
并转义我的反斜杠,但随后出现
The route template cannot start with a '/' or '~' character and it cannot contain a '?' character.
如果我什至不能使用 ?
,我怎么能创建带有可选部分的正则表达式?
我希望管道运算符或交替运算符没有这样的限制,使用 which 和一些锚点,你可以让它工作。
[Route(@"{cultureString:regex(^\w\w(-\w{2}|)$)}")]
上面的意思是它匹配两个 \w
后跟另外两个 \w
或字符串的结尾 $
我想将 WebAPI 操作方法映射到格式为 api/v2/l8n/{cultureCode}
的网址,但为了避免与其他方法发生路由冲突,我需要将 cultureCode
参数限制为仅与正则表达式匹配的值^\w{2}(?:-\w{2})?$
,即 sv
和 en-GB
,但不是 hello
。
我在控制器上有一个 RoutePrefix
属性负责 api/v2/i8n
,所以我尝试将操作映射到
[Route(@"{cultureString:regex(^\w{2}(?:-\w{2})?$)")]
但随后在配置时抛出一个错误,指出 {cultureString:regex(^\w{2
是一个错误的路由值。我尝试用 \w\w
替换 \w{2}
以及删除 @
并转义我的反斜杠,但随后出现
The route template cannot start with a '/' or '~' character and it cannot contain a '?' character.
如果我什至不能使用 ?
,我怎么能创建带有可选部分的正则表达式?
我希望管道运算符或交替运算符没有这样的限制,使用 which 和一些锚点,你可以让它工作。
[Route(@"{cultureString:regex(^\w\w(-\w{2}|)$)}")]
上面的意思是它匹配两个 \w
后跟另外两个 \w
或字符串的结尾 $