compojure-api
compojure-api copied to clipboard
Issue with enum query parameter with a default value
If a query parameter is of type enum and has a default value, the swagger parameter for default
should be appropriately set and required
should be set to true.
Here is an example below.
what's happening
(GET "/all/" request
:description "Return a list of articles."
:return [(dissoc t/Article :is_html :text)]
:responses default-responses
:query-params [{sort :- (describe (s/enum :published_at :last_processed_at) "The sort type. Defaults to published_at.") "published_at"}]
(return (domain/get-all-articles db (org request) :days 1)))
The sort parameter above can be either published_at
or last_processed_at
where it defaults to the former.
The JSON output for the route above is:
"parameters": [
{
"in": "query",
"name": "sort",
"description": "The sort type. Defaults to published_at.",
"required": false,
"type": "string",
"enum": [
"last_processed_at",
"published_at"
]
}
]
And the UI renders like this:
expectation
I would expect the select box in the UI to start off with the published_at
pre-selected and not allow a nil option.
I would expect the json output to have required
set to true and a default
value set to published_at
.
Thanks for your time!
Missed this, sorry. Wrote an issue to ring-swagger, which does the conversion to swagger json schema.
~~Sorry to hijack this but what is that describe
function?~~
Nevermind, compojure.api.sweet/describe