Это так же легко, как
(def all-routes (concat api-routes site-routes))
Объяснение начинается здесь https://github.com/pedestal/pedestal/blob/master/guides/documentation/service-routing.md#defining-route-tables, утверждается, что
таблица маршрута просто структура данных; в нашем случае это последовательность отображений.
пьедестал команда называет это последовательность отображений маршрута табличной форме в расширенном формате и они разработать лаконичный формат таблицы маршрутизации, которая является то, что мы поставляем defroute
. Затем defroute
преобразует наш краткий формат в подробный формат.
Вы можете проверить себя в РЕПЛ
;; here we supply a terse route format to defroutes
> (defroutes routes
[[["/" {:get home-page}
["/hello" {:get hello-world}]]]])
;;=> #'routes
;; then we pretty print the verbose route format
> (pprint routes)
;;=>
({:path-parts [""],
:path-params [],
:interceptors
[{:name :mavbozo-pedestal.core/home-page,
:enter
#object[io.pedestal.interceptor$eval7317$fn__7318$fn__7319 0x95d91f4 "[email protected]"],
:leave nil,
:error nil}],
:path "/",
:method :get,
:path-re #"/\Q\E",
:route-name :mavbozo-pedestal.core/home-page}
{:path-parts ["" "hello"],
:path-params [],
:interceptors
[{:name :mavbozo-pedestal.core/hello-world,
:enter
#object[io.pedestal.interceptor$eval7317$fn__7318$fn__7319 0x4a168461 "[email protected]"],
:leave nil,
:error nil}],
:path "/hello",
:method :get,
:path-re #"/\Qhello\E",
:route-name :mavbozo-pedestal.core/hello-world})
Таким образом, потому что постамент маршрут просто последовательность карт, можно легко объединить несколько неперекрывающихся маршрутов с concat
.
Это то, что мне нравится один из принципов Clojure, который постамент команды следующим образом: общих манипуляций с данными, которые в этом случае многословным отформатирована таблица маршрутизации просто карта - структура данных обыкновенного Clojure, который может быть осмотрен и управляются с помощью обычных функций манипуляции структурой данных clojure.core, таких как concat
. Даже краткий формат также является простой структурой данных clojure и может легко проверяться и обрабатываться с помощью тех же средств.