mirror of
https://github.com/metosin/reitit.git
synced 2025-12-20 09:31:11 +00:00
Automatically publish Swagger :consumes for :form params
Make parameters-middleware publish swagger data for endpoints when :form, but not :body params, are present.
This commit is contained in:
parent
0ffef07cbf
commit
15df0c5005
2 changed files with 25 additions and 1 deletions
|
|
@ -10,4 +10,8 @@
|
||||||
:form-params - a map of parameters from the body
|
:form-params - a map of parameters from the body
|
||||||
:params - a merged map of all types of parameter"
|
:params - a merged map of all types of parameter"
|
||||||
{:name ::parameters
|
{:name ::parameters
|
||||||
|
:compile (fn [{:keys [parameters]} _]
|
||||||
|
(if (and (some? (:form parameters)) (nil? (:body parameters)))
|
||||||
|
{:data {:swagger {:consumes ["application/x-www-form-urlencoded"]}}}
|
||||||
|
{}))
|
||||||
:wrap params/wrap-params})
|
:wrap params/wrap-params})
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
(ns reitit.ring.middleware.parameters-test
|
(ns reitit.ring.middleware.parameters-test
|
||||||
(:require [clojure.test :refer [deftest testing is]]
|
(:require [clojure.test :refer [deftest testing is]]
|
||||||
[reitit.ring.middleware.parameters :as parameters]
|
[reitit.ring.middleware.parameters :as parameters]
|
||||||
[reitit.ring :as ring]))
|
[reitit.ring :as ring]
|
||||||
|
[reitit.swagger :as swagger]))
|
||||||
|
|
||||||
(deftest parameters-test
|
(deftest parameters-test
|
||||||
(let [app (ring/ring-handler
|
(let [app (ring/ring-handler
|
||||||
|
|
@ -13,3 +14,22 @@
|
||||||
(app {:request-method :get
|
(app {:request-method :get
|
||||||
:uri "/ping"
|
:uri "/ping"
|
||||||
:query-string "kikka=kukka"})))))
|
:query-string "kikka=kukka"})))))
|
||||||
|
|
||||||
|
(deftest parameters-swagger-test
|
||||||
|
(let [app (ring/ring-handler
|
||||||
|
(ring/router
|
||||||
|
[["/form-params" {:post {:parameters {:form {:x string?}}
|
||||||
|
:handler identity}}]
|
||||||
|
["/body-params" {:post {:parameters {:body {:x string?}}
|
||||||
|
:handler identity}}]
|
||||||
|
["/swagger.json" {:get {:no-doc true
|
||||||
|
:handler (swagger/create-swagger-handler)}}]]
|
||||||
|
{:data {:middleware [parameters/parameters-middleware]}}))
|
||||||
|
spec (fn [path]
|
||||||
|
(-> {:request-method :get :uri "/swagger.json"}
|
||||||
|
app
|
||||||
|
(get-in [:body :paths path :post])))]
|
||||||
|
(testing "with form parameters"
|
||||||
|
(is (= ["application/x-www-form-urlencoded"] (:consumes (spec "/form-params")))))
|
||||||
|
(testing "with body parameters"
|
||||||
|
(is (= nil (:consumes (spec "/body-params")))))))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue