Каков правильный способ объявить необязательный параметр запроса со значением по умолчанию при использовании compojure-api
?Необязательные параметры запроса (со значением по умолчанию) с compojure-api
Один из моих маршрутов элементов следующим образом (после прочтения this):
(GET "/:id/descendants" [id]
:return [d/CategoryTreeElement]
:path-params [id :- Long]
:query-params [context-type :- d/ContextType
levels :- Integer
{tenant :- d/Tenant :DEF_TENANT}
{show-future :- Boolean false}
{show-expired :- Boolean false}
{show-suppressed :- Boolean false}
:summary "Fetch category descendants"
(ok ...))
В первом булева Params, где определен как другие из них (например, show-future Boolean
), но сгенерированный Куража UI представивших их как выпадающий список с значением true
по умолчанию. В представленной форме пользовательский интерфейс отображает выпадающий список, который не выбран. То же самое происходит с арендатором.
Одна сторона вопрос: когда я использую Swagger сгенерированный интерфейс, чтобы отправить запрос, и возвращается ошибка: "levels": "(not (instance? java.lang.Integer \"2\"))"
. Почему это? Разве библиотека не должна принуждать/преобразовывать значения строк в назначенные типы, объявленные API?
Заранее спасибо.
Спасибо вам за ответ. Итак, о логическом необязательном параметре, не имеет значения, определяю ли значение по умолчанию, поскольку значение по умолчанию не выбрано в пользовательском интерфейсе. –
@ matheus.emm Вам нужно указать значение параметра по умолчанию, если вы хотите, чтобы оно было необязательным. В противном случае пользовательский интерфейс Swagger заставит вас выбрать одно из значений ('true' или' false'), и если вы отправите запрос без указания значения для этого параметра запроса, вы получите ошибку проверки схемы. Значение по умолчанию требуется, чтобы у вашего параметра было допустимое значение, назначенное (в соответствии с вашей схемой), если оно не предоставлено вызывающим абонентом. –
@ matheus.emm Я обновил ответ с информацией о том, как обращаться с принуждением Integer. –