1

我已经开始学习 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))"}

不幸的是,这对我来说并不明显。如何返回指定架构的多个对象?我可以以transit+json格式退回它们吗?

4

1 回答 1

2

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

(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)))
于 2016-10-04T08:36:14.563 回答