问题描述
我无法连接 Clojure 库 https://github.com/metosin/compojure-api 和 https://github.com/plexus/chestnut。我需要添加新的路由,例如:
; src/restful_crud/book.clj
(ns resultful-crud.book
(:require ; ...
[resultful-crud.models.book :refer [Book]]
[toucan.db :as db]
[ring.util.http-response :refer [ok not-found created]]
[compojure.api.sweet :refer [GET POST PUT DELETE]]))
;; Create
(defn id->created [id]
(created (str "/books/" id) {:id id}))
(defn create-book-handler [create-book-req]
(-> (db/insert! Book create-book-req)
:id
id->created))
;; Get All
(defn get-books-handler []
(ok (db/select Book)))
;; Get By Id
(defn book->response [book]
(if book
(ok book)
(not-found)))
(defn get-book-handler [book-id]
(-> (Book book-id)
book->response))
;; Update
(defn update-book-handler [id update-book-req]
(db/update! Book id update-book-req)
(ok))
;; Delete
(defn delete-book-handler [book-id]
(db/delete! Book :id book-id)
(ok))
;; Routes
(def book-routes
[(POST "/books" []
:body [create-book-req BookRequestSchema]
(create-book-handler create-book-req))
(GET "/books" []
(get-books-handler))
(GET "/books/:id" []
:path-params [id :- s/Int]
(get-book-handler id))
(PUT "/books/:id" []
:path-params [id :- s/Int]
:body [update-book-req BookRequestSchema]
(update-book-handler id update-book-req))
(DELETE "/books/:id" []
:path-params [id :- s/Int]
(delete-book-handler id))])
以及粘贴的位置(来自此文件 https://github.com/plexus/chestnut/blob/master/src/leiningen/new/chestnut/src/clj/chestnut/application.clj):
(defn app-system [config]
(component/system-map
:routes (new-endpoint home-routes) // ???
:middleware (new-middleware {:middleware (:middleware config)})
:handler (-> (new-handler)
(component/using [:routes :middleware]))
:http (-> (new-web-server (:http-port config))
(component/using [:handler]))
:server-info (server-info (:http-port config))))
基本上我应该在 ':routes' 中添加什么来使 'compojure.api.sweet' 与 'com.stuartsierra.component' 一起工作?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)