Created
November 3, 2022 08:21
-
-
Save ergodicbreak/f4f0ae210b1b5d6996baedfd603b45b7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns cheshire-cat.core | |
(:require [ring.adapter.jetty :refer [run-jetty]] | |
[ring.util.response :as rr] | |
[compojure.core :refer :all] | |
[compojure.route :as route] | |
[ring.middleware.defaults :refer [wrap-defaults site-defaults]] | |
[ring.middleware.resource :refer [wrap-resource]] | |
[clojure.data.json :as json]) | |
(:gen-class)) | |
;; https://github.com/ring-clojure/ring/wiki/Concepts#middleware | |
(defn json-response [response] | |
(-> response | |
(update :body json/write-str) | |
(rr/content-type "application/json; charset=utf-8"))) | |
(defn wrap-json-response [handler] | |
(fn | |
([request] | |
(-> (handler request) (json-response))) | |
([request respond raise] | |
(handler request #(respond (json-response)) raise)))) | |
(defroutes app-routes | |
(GET "/" [] "Hello world!") | |
(GET "/cheshire-cat" [] (rr/response {:name "Cheshire Cat" :status "grinning!!"})) | |
(route/not-found "Not found.")) | |
(def app | |
(-> app-routes | |
(wrap-json-response) | |
(wrap-defaults site-defaults))) | |
(defn -main [& args] | |
(run-jetty app {:port 3000})) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment