compojure-api
を使用する場合、省略可能なクエリパラメータをデフォルト値で宣言する適切な方法は何ですか?compojure-apiを使用したオプションのクエリパラメータ(既定値)
次のように私のルート要素の一つは、(thisを読んだ後)である。他のもの(例えばshow-future Boolean
)として定義された最初のブールのparamsで
(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 ...))
が、生成された闊歩UIは、コンボボックスとしてそれらを提示既定値はtrue
です。現在のフォームでは、選択されていないコンボボックスがUIに表示されます。テナントも同様です。
片方の質問:SwaggerでUIを生成してリクエストを送信すると、エラーが返されます。"levels": "(not (instance? java.lang.Integer \"2\"))"
。何故ですか?ライブラリがAPIによって宣言された指定された型にストリング値を変換/変換することは想定されていませんか?
ありがとうございます。
お返事ありがとうございます。したがって、ブール値のオプションパラメータについては、UIでデフォルト値が選択されていないので、デフォルト値を定義しても問題ありません。 –
@ matheus.emm省略可能にするには、デフォルトのパラメータ値を指定する必要があります。それ以外の場合、Swagger UIは値のいずれか( 'true'または' false')を強制的に選択し、そのクエリパラメータの値を指定せずにリクエストを送信すると、スキーマの検証エラーが発生します。デフォルト値は必須です。パラメータには、呼び出し元によって指定されていないパラメータ(スキーマに従って)が割り当てられています。 –
@ matheus.emm「Integer」強制を処理する方法に関する情報を更新しました。 –