Как реализовать промежуточное ПО для 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, так как я не хочу сейчас переходить на новую библиотеку для маршрутизации.

0 ответов

Другие вопросы по тегам