我是具有基座(pedestal.io)的新手,并且我尝试代理从浏览器获得的所有请求,除了一些特定的请求(需要一些额外的拦截器)。这些是我的路线:
(def routes #{
["/*proxy" :any [(proxy-handler (server :dan-server))]]
["/service/storyboard/StoryboardLayer/auto" :post [dummy-interceptor (proxy-handler (server :dan-server))] :route-name :save-layer-route]
})
但是我从来没有得到过虚拟拦截器的称呼。这些应该如何结合?
答案 0 :(得分:0)
这里也描述了问题:https://github.com/pedestal/pedestal/issues/532#issuecomment-324881362
“我对http://pedestal.io/reference/routing-quick-reference的理解是有意为之:'通配符路由始终会胜过同一子树中的显式路径。”根处的通配符路由会胜过其他所有内容。”
修复
在页面底部,http://pedestal.io/reference/routing-quick-reference说我们需要说要使用哪个路由器,一个是:linear-router
为解决此问题,我在服务映射中添加了此地址,后来将其用于创建服务器
(def service {
...
::http/router :linear-search
现在,如果我切换路线,这是可行的,因为它们是按顺序(线性)进行分析的。
(def routes #{
["/service/storyboard/StoryboardLayer/auto" :post [dummy-interceptor (proxy-handler (server :dan-server))] :route-name :save-layer-route]
["/*proxy" :any [(proxy-handler (server :dan-server))]]
})