डिफ़ॉल्ट मान के साथ, एक वैकल्पिक क्वेरी पैरामीटर की घोषणा करने के लिए उचित तरीका क्या है, जब 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
), लेकिन उत्पन्न स्वैगर यूआई उन्हें एक बता गया के रूप में प्रस्तुत पर डिफ़ॉल्ट रूप से true
मान के साथ। वर्तमान रूप में यूआई एक combobox दिखाता है जिसमें कोई विकल्प नहीं चुना गया है। किरायेदार के साथ भी यही होता है।
एक पक्ष सवाल: जब मैं स्वैगर उत्पन्न UI का उपयोग एक अनुरोध भेजने के लिए और त्रुटि दी है: "levels": "(not (instance? java.lang.Integer \"2\"))"
। ऐसा क्यों है? क्या लाइब्रेरी को एपीआई द्वारा घोषित नामित प्रकारों में स्ट्रिंग मानों को कॉरर्स/कन्वर्ट करना नहीं है?
अग्रिम धन्यवाद।
आप के लिए धन्यवाद जवाब। तो बूलियन वैकल्पिक पैरामीटर के बारे में, इससे कोई फर्क नहीं पड़ता कि मैं डिफ़ॉल्ट मान को परिभाषित करता हूं, क्योंकि यूआई पर डिफ़ॉल्ट मान नहीं चुना जाता है। –
@ matheus.emm यदि आप इसे वैकल्पिक बनाना चाहते हैं तो आपको डिफ़ॉल्ट पैरामीटर मान निर्दिष्ट करना होगा। अन्यथा स्वैगर यूआई आपको मानों में से एक ('true' या 'false') चुनने के लिए मजबूर करेगा और यदि आप उस क्वेरी पैरामीटर के लिए कोई मान निर्दिष्ट किए बिना अनुरोध भेजते हैं तो आपको स्कीमा सत्यापन त्रुटि मिल जाएगी। डिफ़ॉल्ट मान आवश्यक है, इसलिए आपके पैरामीटर में वैध मान असाइन किया गया है (आपकी स्कीमा के अनुसार) यदि यह कॉलर द्वारा प्रदान नहीं किया गया है। –
@ matheus.emm मैंने जानकारी को 'इंटीगर' जबरन को संभालने के तरीके के साथ उत्तर अपडेट किया है। –