2015-11-03 2 views

ответ

3

Это так же легко, как

(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 и может легко проверяться и обрабатываться с помощью тех же средств.

Смежные вопросы