여기에는 구성 가능성과 확장 성을 목적으로하는 매크로 매직이없는 링 핸들러 인 comporoute이 있습니다.
초기 알파 상태이지만 정확한 문서 문자열이 이미 있습니다. 현재 가지고있는 문제를 해결하기 위해 내부 미들웨어이라는 기능이 있습니다. 필요로하는 용도로만 사용할 수 있으며, 나머지는 Compojure에 맡길 수 있습니다.
은
당신의 Compojure 핸들러 감안할 때/응용 프로그램은 compojure
라고 : 쉘에서
(defn demo-middleware
"A test midleware associng :bar to :foo of request"
[handler]
(fn [request]
(handler (assoc request :foo :bar))))
(defn demo-handler [request]
(ring.util.response/response
(str "id is " (get-in request [:params :id]) " "
":foo is" (:foo request))))
(def app
(comporoute.core/router
[["/demo-with-middleware"
[demo-middleware ;; all handlers in this vector are
;; wrapped via demo-middleware
["/:id" :demo-with demo-handler]]]
["/demo-without-middleware"
["/:id" :demo-without demo-handler]]]
:page-not-found compojure)
curl http://localhost:8080/demo-without-middleware/1234
id is 1234 :foo is
curl http://localhost:8080/demo-with-middleware/1234
id is 1234 :foo is :bar
# Everything else will be handled by compojure.
종속성 벡터 [comporoute "0.2.0"]
내가 RO 다시이 모든 기존 노선 코드를 작성해야합니까 스타일 또는 정의 부분 (모든 "/ xyz/*"[] (my-middleware xyz-routes))) 문법의 종류? –
방금 답변을 업데이트했습니다. 미들웨어가 필요한 경로를 별도의 단열재에 넣으십시오. –
이것은 나를 위해 작동하지 않습니다. 예를 들어 내가 요청을하면 db/blahblahblah db-routes에/blahblahblah가 없으면 미들웨어를 먼저 호출 한 다음 경로의 db-routes를 확인하고 찾을 수없는 경우 404를 반환합니다. –