Как реализовать промежуточное ПО для Swagger в compojure-api для преобразования схем из kabab-case в camelCase
Приложение использует форматирование ключа kabab-case для схемы, как показано ниже.
(s/defschema User
{:first-name s/Str
:last-name s/Str})
Но для чванливых документов мне нужна схема в camelCase, как показано ниже.
(s/defschema User
{:firstName s/Str
:lastName s/Str})
Есть ли способ реализовать промежуточное программное обеспечение для чванства, чтобы я мог преобразовать схему из kabab-case в camelCase? Пожалуйста, предложите, как я могу этого добиться.
Мой текущий код выглядит следующим образом для динамической генерации документов swagger для API.
(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))
Я использую swagger, предоставленный compojure-api для маршрутизации.
Мы можем реализовать мое требование с помощью reitit , а также есть пример проекта rest-api с использованием reitit , как этого добиться. Но я хочу добиться того же, используя compojure-api, так как я не хочу сейчас переходить на новую библиотеку для маршрутизации.