在我的Compojure / Ring Web应用程序的处理程序中,我需要使用site-defaults
中间件来提供一组路由,并使用api-defaults
中间件来提供另一套路由。我该怎么办?
下面的代码仅使用site-defaults
中间件提供一组路由。使用api-routes
中间件为第二组路由(api-defaults
)提供服务时,我应该添加什么?
(web-experiment.handler (:require [compojure.core :refer :all] [compojure.route :as route] [ring.middleware.defaults :refer [wrap-defaults site-defaults api-defaults]] [web-experiment.views :refer :all])) (defroutes app-routes (GET "/" [] (index-page)) (GET "/about" [] (about-page)) (route/not-found "Not Found")) (defroutes api-routes (GET "/grapefruit" [:as {body :body}] (grapefruit-api body)) (GET "/factory" [:as {body :body}] (factory-api body)) (GET "/umbrella" [:as {body :body}] (umbrella-api body)) (route/not-found "Not Found")) (def app (wrap-defaults app-routes site-defaults)) ;; TODO: Add api-routes. How to use api-defaults middleware to serve api-routes?
我读过这些:
Serving app and api routes with different middleware using Ring and Compojure-无法解决问题,因为提出的解决方案不适用于使用wrap-defaults
配置的site-defaults
中间件。
https://github.com/ring-clojure/ring-anti-forgery/pull/14-没有为我遇到的问题提供清晰的解决方案(即代码段)。
在我的Compojure / Ring Web应用程序的处理程序中,我需要使用site-defaults中间件来提供一组路由,而使用api-defaults中间件来提供另一套路由。我该怎么办...
我不确定在Compojure中如何解决此问题,但您不妨考虑使用Pedestal。 This page很好地介绍了路由匹配过程,该过程发生在[before