模式对象的Compojure-Api返回向量



我已经开始学习Luminus框架进入Clojure(脚本)的web应用程序。对于RESTful服务,框架建议使用swagger/compojure-api。示例很有用,但是我找不到任何关于返回集合的示例。

这是我的模型:
CREATE TABLE thread
(id INTEGER PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30));

和Conman查询:

-- :name get-threads :? :*
-- :doc selects all threads
SELECT * FROM thread

service有一个模式(由于java的Thread,它被称为Thread):

(s/defschema Threadd {:id s/Int
                      :name s/Str})

最后,在service-routes (defapi expression)中,简单GET:

(GET "/thread" []
      :return       Threadd
      :summary      "All threads"
      (ok  (db/get-threads)))

应用程序运行,并且Swagger-UI根据我的请求(edn格式)返回这个:

{:errors "(not (map? a-clojure.lang.LazySeq))"}

不幸的是,这对我来说并不明显。我如何返回多个对象与模式指定?我能以传输+json格式返回它们吗?

您可以为线程序列定义另一个模式:

(s/defschema Threads [Threadd])

,并将其指定为端点的返回类型:

(GET "/thread" []
      :return       Threads
      :summary      "All threads"
      (ok  (db/get-threads)))

也可以定义为inline:

(GET "/thread" []
      :return       [Threadd]
      :summary      "All threads"
      (ok  (db/get-threads)))

最新更新