У меня есть веб-приложение clojure / compojure со следующими маршрутами
(defroutes my-routes
(GET "/app/preview" request (my-preview-function request))
(ANY "*" request (str "ANY page <br>" (request :params))))
Предварительный запрос GET сделан с парой параметров. Я считаю, что это работает большую часть времени, но иногда / ebook / preview не обнаруживается, и обработка сбрасывается на ЛЮБОЙ маршрут, и в этом случае вывод аналогичен этому,
ANY page
{:* "/app/preview", :section "50", :id "48"}
Может кто-нибудь подсказать, что может привести к пропуску запроса / ebook / preview? Это определенно GET-запрос; HTML-код не имеет POST для URL-адреса / app / preview, и чтобы быть вдвойне уверенным, я добавил POST-маршрут для / app / preview, но это не ударил.
JAR версии:
Clojure 1.2
compojure-0.6.2
ring-core-0.3.7
jetty-6.1.14
ring-jetty-adapter-0.3.1
ring-servlet-0.3.1jar
servlet-api-2.5-6.1.14
Маршруты упакованы следующим образом
(require '[compojure.handler :as handler])
(defn wrap-charset [handler charset]
(fn [request]
(if-let [response (handler request)]
(if-let [content-type (get-in response [:headers "Content-Type"])]
(if (.contains content-type "charset")
response
(assoc-in response
[:headers "Content-Type"]
(str content-type "; charset=" charset)))
response))))
(def app (-> my-routes
handler/site
wrap-stateful-session
(wrap-charset "utf-8")
(wrap-file "public")))
(defn run []
(run-jetty (var app) {:join? false :port 8080}))