使用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 ...))
起初,其中定義爲其他的(例如show-future Boolean
),但所生成的揚鞭UI呈現它們作爲組合框布爾PARAMS默認值爲true
。在目前的形式中,用戶界面顯示了一個沒有選擇選項的組合框。租戶也是如此。
一方面的問題:當我使用Swagger生成的UI發送請求並返回錯誤時:"levels": "(not (instance? java.lang.Integer \"2\"))"
。這是爲什麼?庫不是應該強制/將字符串值轉換爲由API聲明的指定類型嗎?
在此先感謝。
謝謝你的回答。所以關於布爾可選參數,如果我定義一個默認值並不重要,因爲在UI上沒有選擇默認值。 –
@ matheus.emm如果您希望它是可選的,您必須指定默認參數值。否則Swagger UI會強制你選擇其中一個值('true'或'false'),如果你發送的請求沒有爲該查詢參數指定一個值,你會得到schema驗證錯誤。默認值是必需的,所以如果你的參數沒有被調用者提供,那麼你的參數有一個有效的值(根據你的模式)。 –
@ matheus.emm我已經更新瞭如何處理Integer強制的信息。 –