Clojure 로 http 핸들러 만들기

버들비·2021년 4월 20일
0

ring 과 compojure 를 이용해 http API 서버 만들기

(ns YOUR_PROJECT_NAME.handler
  (:require [compojure.core :refer [defroutes GET POST PUT DELETE]]
            [compojure.route :as route]
            [ring.middleware.defaults :refer [wrap-defaults site-defaults api-defaults]]
            [ring.middleware.json :as ring-json]
            [ring.util.response :as rr]))
(defroutes app-routes
  (GET "/" [] (do (println "someone comes in!")
                  (rr/response {:name "home" :status "good"})))
  (GET "/cat/:name/profile" [name]
    (rr/response
     {:name name
      :status :grinning}))
  (GET "/db" []
    (do (println (sql/query "postgresql://localhost:5432/testdb"
                            ["select * from testing"]))
        (str "wow" "<h1>hello!</h1>")))
  (POST "/post" []
    (rr/response {:name "post" :status "good"}))
  (PUT "/put" []
    (rr/response {:name "put" :status "good"}))
  (DELETE "/delete" []
    (rr/response {:name "delete" :status "good"}))
  (route/not-found "Not Found"))

이때 ring wrapper를 site-defaults로 해두면 유효하지 않은 토큰 에러가 뜬다. api-defaults 로 변경하면 됨.

(def app
(-> app-routes
(ring-json/wrap-json-response)
(wrap-defaults api-defaults)))

0개의 댓글