mirror of
https://github.com/metosin/reitit.git
synced 2025-12-18 17:01:11 +00:00
wip
This commit is contained in:
parent
9fc8710cad
commit
c3a3b923a7
5 changed files with 104 additions and 0 deletions
11
examples/pedestal/.gitignore
vendored
Normal file
11
examples/pedestal/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
/target
|
||||||
|
/classes
|
||||||
|
/checkouts
|
||||||
|
pom.xml
|
||||||
|
pom.xml.asc
|
||||||
|
*.jar
|
||||||
|
*.class
|
||||||
|
/.lein-*
|
||||||
|
/.nrepl-port
|
||||||
|
.hgignore
|
||||||
|
.hg/
|
||||||
17
examples/pedestal/README.md
Normal file
17
examples/pedestal/README.md
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# reitit-http example with pedestal
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```clj
|
||||||
|
> lein repl
|
||||||
|
(start)
|
||||||
|
```
|
||||||
|
|
||||||
|
Go with browser to:
|
||||||
|
|
||||||
|
* http://localhost:3000/api/sync - synchronous
|
||||||
|
* http://localhost:3000/api/async - with core.async
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Copyright © 2018 Metosin Oy
|
||||||
7
examples/pedestal/project.clj
Normal file
7
examples/pedestal/project.clj
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
(defproject ring-example "0.1.0-SNAPSHOT"
|
||||||
|
:description "Reitit-http with pedestal"
|
||||||
|
:dependencies [[org.clojure/clojure "1.9.0"]
|
||||||
|
[io.pedestal/pedestal.service "0.5.1"]
|
||||||
|
[io.pedestal/pedestal.jetty "0.5.1"]
|
||||||
|
[metosin/reitit "0.2.0-SNAPSHOT"]]
|
||||||
|
:repl-options {:init-ns example.server})
|
||||||
35
examples/pedestal/src/example/pedestal.clj
Normal file
35
examples/pedestal/src/example/pedestal.clj
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
(ns example.pedestal
|
||||||
|
(:require [io.pedestal.interceptor.chain :as chain]
|
||||||
|
[io.pedestal.interceptor :as interceptor]
|
||||||
|
[reitit.http :as http])
|
||||||
|
(:import (reitit.interceptor Executor)))
|
||||||
|
|
||||||
|
(def pedestal-executor
|
||||||
|
(reify
|
||||||
|
Executor
|
||||||
|
(queue [_ interceptors]
|
||||||
|
(->> interceptors
|
||||||
|
(map (fn [{:keys [::interceptor/handler] :as interceptor}]
|
||||||
|
(or handler interceptor)))
|
||||||
|
(map interceptor/interceptor)))
|
||||||
|
(enqueue [_ context interceptors]
|
||||||
|
(chain/enqueue context interceptors))))
|
||||||
|
|
||||||
|
(defn routing-interceptor
|
||||||
|
([router]
|
||||||
|
(routing-interceptor router nil))
|
||||||
|
([router default-handler]
|
||||||
|
(routing-interceptor router default-handler nil))
|
||||||
|
([router default-handler opts]
|
||||||
|
(interceptor/interceptor
|
||||||
|
(http/routing-interceptor
|
||||||
|
router
|
||||||
|
default-handler
|
||||||
|
(merge {:executor pedestal-executor} opts)))))
|
||||||
|
|
||||||
|
(def router http/router)
|
||||||
|
|
||||||
|
(defn with-reitit-router [spec router]
|
||||||
|
(-> spec
|
||||||
|
(update ::http/interceptors (comp vec butlast))
|
||||||
|
(update ::http/interceptors conj router)))
|
||||||
34
examples/pedestal/src/example/server.clj
Normal file
34
examples/pedestal/src/example/server.clj
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
(ns example.server
|
||||||
|
(:require [io.pedestal.http :as http]
|
||||||
|
[io.pedestal.http.route :as route]
|
||||||
|
[io.pedestal.http.body-params :as body-params]
|
||||||
|
[io.pedestal.http.route.definition :refer [defroutes]]))
|
||||||
|
|
||||||
|
(defn hello-world [request]
|
||||||
|
(let [name (get-in request [:params :name] "World")]
|
||||||
|
{:status 200 :body (str "Hello " name "!\n")}))
|
||||||
|
|
||||||
|
(defroutes routes
|
||||||
|
[[["/"
|
||||||
|
["/hello" {:get hello-world}]]]])
|
||||||
|
|
||||||
|
(def service {:env :prod
|
||||||
|
::http/routes routes
|
||||||
|
::http/resource-path "/public"
|
||||||
|
::http/type :jetty
|
||||||
|
::http/port 8080})
|
||||||
|
|
||||||
|
(defn start []
|
||||||
|
(-> service/service
|
||||||
|
(merge {:env :dev
|
||||||
|
::http/join? false
|
||||||
|
::http/routes #(deref #'routes)
|
||||||
|
::http/allowed-origins {:creds true :allowed-origins (constantly true)}})
|
||||||
|
http/default-interceptors
|
||||||
|
http/dev-interceptors
|
||||||
|
http/create-server
|
||||||
|
http/start))
|
||||||
|
|
||||||
|
|
||||||
|
(comment
|
||||||
|
(start))
|
||||||
Loading…
Reference in a new issue