Общие [/ * proxy: any] и конкретные [/ service / x: post ..] маршруты с сервером clojure пьедестала - PullRequest
0 голосов
/ 26 июня 2018

Я новичок с пьедесталом (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]
           })

Однако я никогда не называю манекен-перехватчик. Как они должны быть объединены?

1 Ответ

0 голосов
/ 27 июня 2018

Здесь также описана проблема: https://github.com/pedestal/pedestal/issues/532#issuecomment-324881362

«Мое понимание http://pedestal.io/reference/routing-quick-reference заключается в том, что это преднамеренно:« маршруты с подстановочными знаками всегда побеждают явные пути в одном и том же поддереве ». Маршрут с подстановочными знаками в корне побеждает все остальное.»

Fix

В нижней части страницы, 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))]]
       })
...