Last active
August 29, 2015 14:23
-
-
Save practice/8c8bbec56f5538b9c665 to your computer and use it in GitHub Desktop.
clojure restful service
This file contains hidden or 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
;; handler | |
(def app | |
(-> (routes | |
api-routes ;; for rest api | |
(wrap-routes home-routes middleware/wrap-csrf) ;; for regular web site | |
base-routes) | |
middleware/wrap-base)) | |
;; middleware에 있는 wrap-base | |
(defn wrap-formats [handler] | |
(wrap-restful-format handler :formats [:json-kw :transit-json :transit-msgpack])) | |
;; 위 함수가 json body를 clojure의 keyword:value로 바꾸는거 아닌가요? ㅠㅠ | |
(defn wrap-base [handler] | |
(-> handler | |
wrap-dev | |
(wrap-idle-session-timeout | |
{:timeout (* 60 30) | |
:timeout-response (redirect "/")}) | |
wrap-formats | |
(wrap-defaults | |
(-> site-defaults | |
(assoc-in [:security :anti-forgery] false) | |
(assoc-in [:session :store] (memory-store session/mem)))) | |
wrap-servlet-context | |
wrap-internal-error)) | |
;; 제가 만든 api-routes 구현 | |
(defn validate-user [user] | |
(timbre/debug user) | |
(b/validate user | |
:username [[v/required :message "Username은 필수 입력입니다"]])) ;; 이 부분을 통과하지 못합니다. :username을 "username"으로 하면 됨. | |
(defn create-user [user] | |
(timbre/debug user) | |
(let [[errors _] (validate-user user)] | |
(if (empty? errors) | |
(do | |
(timbre/info "created a user:" user) | |
(response/created (apipath "/user/ddd"))) | |
(-> | |
(response/response errors) | |
(response/status 400))))) | |
(defroutes api-routes | |
(context "/api/v1" [] | |
(POST "/users" [& form] (create-user form))) | |
) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment