在使用compojure-api
时,如何声明具有默认值的可选查询参数?
我其中一个路由元素如下(在阅读这篇文章之后):
(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 ...))
起初,布尔型参数的定义方式与其他参数相同(例如:show-future Boolean
),但生成的Swagger UI将它们呈现为带有默认值为true
的组合框。现在,UI显示一个没有选择选项的组合框。租户也是同样的情况。
顺便问一句:当我使用Swagger生成的UI发送请求并返回错误时:"levels": "(not (instance? java.lang.Integer \"2\"))"
,这是为什么?难道库不应该强制/转换字符串值为API声明的指定类型吗?
提前感谢。
true
或false
),如果你发送请求时没有为该查询参数指定值,你将会收到模式验证错误。如果调用者未提供参数,则需要默认值来分配有效值(根据模式定义)给你的参数。 - Piotrek BzdylInteger
强制转换的信息。 - Piotrek Bzdyl