私は、Webアプリケーション用のClojure(スクリプト)に入るためにLuminusフレームワークの学習を開始しました。 RESTfulサービスフレームワークについては、swagger/compojure-apiを使用することを提案します。例は役に立ちましたが、コレクションを返すためのものは見つかりませんでした。ここで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
スキーマ(それがあるため、JavaのスレッドThreaddと呼ばれている)がある。
(s/defschema Threadd {:id s/Int
:name s/Str})
は、
最後に、サービスルート(defapi
式)では、単純なGET:
(GET "/thread" []
:return Threadd
:summary "All threads"
(ok (db/get-threads)))
アプリケーションが実行され、闊歩-UIは、私の要求(EDN形式)でこれを返す:
{:errors "(not (map? a-clojure.lang.LazySeq))"}
残念ながら、これは私のために明らかにされていません。スキーマを指定して複数のオブジェクトを返すにはどうすればよいですか?私はトランジット+ json形式でそれらを返すことができますか?
ありがとう、それは働いた!前に[Threadd]オプションを使用しましたが、トランジットライターではエラーが発生していました。ちなみに、Compojure-Apiは 'Accept'ヘッダで指定された形式でデータを返しますか?トランジットライターが必要ですか? – fevgenym
はい、それは必要です(compojure-apiは[README](https://github.com/metosin/compojure-api#compojure-api---)でそれをハイライトします:クライアントの交渉可能な形式:JSON、EDN、YAML&Transit (JSON&MessagePack))。 –