Добавить промежуточное ПО в проект Compojure по умолчанию - PullRequest
0 голосов
/ 30 июня 2019

Я работал с шаблоном Compojure Leiningen с моим кодом, но сейчас я пытаюсь добавить промежуточное программное обеспечение.Для справки: это проект по умолчанию:

(ns test.handler
  (:require [compojure.core :refer :all]
            [compojure.route :as route]
            [ring.middleware.defaults :refer [wrap-defaults site-defaults]]))

(defroutes app-routes
  (GET "/" [] "Hello World")
  (route/not-found "Not Found"))

(def app
  (wrap-defaults app-routes site-defaults))

Мой код функционально не отклоняется от этого.
Я хотел бы добавить [bk / ring-gzip "0.3.0"] промежуточное ПО.Я понимаю концепцию, но мне не удалось найти синтаксис, расширяющий эту конфигурацию.

Спасибо за потраченное время!

1 Ответ

1 голос
/ 30 июня 2019

Пример на сайте bk / ring-gzip просто нуждается в небольшой адаптации. Маршруты, возвращаемые из compojure, являются обработчиками; упаковщики берут обработчик и возвращают обработчик. Если вам нужны другие обработчики, они должны быть перед gzip, если они действуют по телам запросов или ответов.

(def app (-> app-routes
    (wrap-defaults site-defaults)
    (wrap-gzip)))

Обычно предпочтительнее использовать форму макропотока, поскольку у вас может быть несколько промежуточных программ для компоновки, но вы можете просто вызывать функции.

...