Nano Hash - криптовалюты, майнинг, программирование

Clojure - объедините маршруты пьедестала

Как комбинировать маршруты в пьедестале?

(defroutes api-routes [...])
(defroutes site-routes [...])
(combine-routes api-routes site-routes) ;; should be a valid route as well

Примечание. Это тот же вопрос, что и Объединение маршрутов в Compojure, но для Pedestal.

03.11.2015

Ответы:


1

Это так же просто, как

(def all-routes (concat api-routes site-routes))

Объяснение начинается здесь https://github.com/pedestal/pedestal/blob/master/guides/documentation/service-routing.md#defining-route-tables указано, что

Таблица маршрутов - это просто структура данных; в нашем случае это последовательность карт.

команда pedestal называет эту последовательность карт форму таблицы маршрутов как подробный формат, и они разрабатывают краткий формат таблицы маршрутов, который мы предоставляем 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 "io.pedestal.interceptor$eval7317$fn__7318$fn__7319@95d91f4"],
    :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 "io.pedestal.interceptor$eval7317$fn__7318$fn__7319@4a168461"],
    :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. Даже краткий формат также является простой структурой данных закрытия, и ее можно легко проверять и манипулировать теми же средствами.

03.11.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..