アプリケーションは、以下のようなスキーマに 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 を使用して同様のことを達成したいと考えています。