我已经开始学习Luminus框架以进入Web应用程序的Clojure(脚本)。对于RESTful服务框架建议使用swagger / compojure-api。示例很有帮助,但我无法找到任何返回的集合。
这是我的模特:
CREATE TABLE thread
(id INTEGER PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30));
康曼查询:
-- :name get-threads :? :*
-- :doc selects all threads
SELECT * FROM thread
对于服务,有一个模式(因为java的线程而被称为Threadd):
(s/defschema Threadd {:id s/Int
:name s/Str})
最后,在service-routes(defapi
表达式)中,简单的GET:
(GET "/thread" []
:return Threadd
:summary "All threads"
(ok (db/get-threads)))
应用程序运行,Swagger-UI根据我的请求(edn格式)返回:
{:errors "(not (map? a-clojure.lang.LazySeq))"}
不幸的是,这对我来说并不明显。如何返回指定架构的多个对象?我可以在途中+ json格式返回它们吗?
答案 0 :(得分:2)
您可以为a sequence of个线程定义另一个架构:
(s/defschema Threads [Threadd])
并将其指定为端点的返回类型:
(GET "/thread" []
:return Threads
:summary "All threads"
(ok (db/get-threads)))
您也可以内联定义:
(GET "/thread" []
:return [Threadd]
:summary "All threads"
(ok (db/get-threads)))