我正在尝试匹配以下形式的路由:
我想这样解构它:
显然,字符串
我该如何修改我的路由以匹配我的参数?
注意:如果有用的话,我还在使用 Prismatic/Schema。
{{mongoID}}.{{width}}x{{height}}.{{extension}}
。例如,/5591499e2dbc18bd0f000050.240x240.jpeg
是一个有效的路由。我想这样解构它:
{:id 5591499e2dbc18bd0f000050
:width 240
:height 240
:extension jpeg }
< p > < code >Compojure 支持正则表达式,似乎也支持点号 https://github.com/weavejester/compojure/issues/42。
我可以为每个字段设置不同的正则表达式,但我不确定如何将其放入路由路径中(我正在尝试使用数组语法):https://github.com/weavejester/compojure/wiki/Routes-In-Detail#matching-the-uri
假设我有以下代码:
(GET ["/my-route/:mongoID.:widthx:height.:extension" :mongoID ...
:width ...
:height ...
:extension ...])
显然,字符串
"/my-route/:mongoID.:widthx:height.:extension"
是不工作的(可能只是因为" x "丢失了,也可能有其他原因)。我该如何修改我的路由以匹配我的参数?
注意:如果有用的话,我还在使用 Prismatic/Schema。
["/my-route/:mongoID.:width:x:height.:extension" :x #"x" :width #"\d+" :height #"\d+" :mongoID #"[^\\.]+"]
。它稍微有点麻烦:我们需要将“x”作为一个单独的参数捕获(在解构时可以忽略),并且需要为mongoID添加一个正则表达式(而不是使用默认值[^\ /,;?] +
)。因此,它会在点处停止。 - nberger