3

アプリケーションは、以下のようなスキーマに kabab-case キー形式を使用します

(s/defschema User
  {:first-name                                 s/Str
   :last-name                                  s/Str})

しかし、swagger ドキュメントの場合、以下のようにキャメルケースのスキーマが必要です

(s/defschema User
  {:firstName                                 s/Str
   :lastName                                  s/Str})

スキーマを kabab-case から camelCase に変換できるように、swagger のミドルウェアを実装する方法はありますか? どうすればこれを達成できるか提案してください。

私の現在のコードは、APIの動的swaggerドキュメント生成のために以下のようになります

(api {:format   {:formats       [:transit-json :json]
                 :params-opts   {:transit-json {:handlers transit/transit-read-handlers}}
                 :response-opts {:transit-json {:handlers transit/transit-write-handlers}}}
          :coercion coercions/default-coercions
          :swagger  {:ui   "/swagger"
                     :spec "/swagger.json"
                     :data {:info {:title "API Docs"}
                            :securityDefinitions
                                      {:api_key
                                       {:type "apiKey"
                                        :name "Authorization"
                                        :in   "header"}}
                            :tags     [{:name "User" :description "/api/v1/user"}]
                            :consumes ["application/json"]
                            :produces ["application/json"]}
                      }
          :api      {:invalid-routes-fn (constantly nil)}}
         (create-api-routes web-server-config :middleware default-middleware))

ルーティングには compojure-api が提供する swagger を使用しています。

reititを使用して私の要件を実装できます。reititを使用してこれを達成する方法のサンプル プロジェクト rest-apiもあります。しかし、今はルーティング用の新しいライブラリにアップグレードしたくないので、compojure-api を使用して同様のことを達成したいと考えています。

4

0 に答える 0