मैं स्वैगर विवरण का उपयोग करके आरईएसटी एपीआई के लिए कुछ डेटा को सत्यापित करने की कोशिश कर रहा हूं। मैंने स्वैगर संपादक रूपांतरण विकल्प का उपयोग करके swagger.json को OpenAPI 3.0.1 में परिवर्तित कर दिया है, और अब इसे कोड की निम्नलिखित पंक्तियों के साथ ObjectMapper के साथ OpenAPI ऑब्जेक्ट में पढ़ने का प्रयास कर रहा हूं:

                File schemaFile = new File(path);
                if (schemaFile.exists() && schemaFile.canRead()) {
                    this.api = MAPPER.readValue(schemaFile, OpenAPI.class);
                }

सबसे पहले, मुझे एक त्रुटि मिली क्योंकि यह कनवर्टर द्वारा उत्पन्न फ़ील्ड x-codegen-request-body-name को पहचान नहीं सका। ठीक है, यह मेरे उद्देश्यों के लिए महत्वपूर्ण नहीं है, इसलिए मैंने इस फ़ील्ड को हटा दिया है। लेकिन फिर मुझे निम्न त्रुटि मिली:

अपरिचित फ़ील्ड "आइटम" (कक्षा io.swagger.v3.oas.models.media.Schema), अनदेखा के रूप में चिह्नित नहीं (34 ज्ञात गुण: "डिफ़ॉल्ट", "एकाधिक", "न्यूनतम", "अनन्य न्यूनतम", "नहीं" , "एक्सटेंशन", "एक्सएमएल", "शीर्षक", "विभेदक", "आवश्यक", "अधिकतम", "शून्य", "अनन्य अधिकतम", "उदाहरणसेटफ्लैग", "मिनप्रॉपर्टीज", "बाहरी डॉक्स", "अधिकतम लम्बाई", " राइटऑनली", "यूनिकइटम्स", "प्रॉपर्टीज", "मैक्सप्रॉपर्टीज", "टाइप", "मैक्सआइटम्स", "एनम", "मिनइटम्स", "पैटर्न", "मिनलेंथ", "रीडऑनली", "उदाहरण", "$ रेफरी ", "बहिष्कृत", "प्रारूप", "अतिरिक्त गुण", "विवरण"])\n पर [स्रोत: (बफर्डइनपुटस्ट्रीम); लाइन: १८६, कॉलम: २३] (संदर्भ श्रृंखला के माध्यम से: io.swagger.v3.oas.models.OpenAPI["components"]->io.swagger.v3.oas.models.Components["schemas"]->java .util.LinkedHashMap["searchAttrList"]->io.swagger.v3.oas.models.media.Schema["properties"]->java.util.LinkedHashMap["merchantCategoryCode"]->io.swagger.v3.oas .models.media.Schema["आइटम"])

सेवा के अनुरोध में एक दर्जन से अधिक विशेषताएँ हैं और उनमें से दो JSON सरणियाँ हैं। openapi.json फ़ाइल में मुझे कन्वर्टर से मिला है जैसे दिखाया गया है

      "merchantCategoryCode": {
        "type": "array",
        "description": "Merchant Category Codes of the Merchant",
        "items": {
          "type": "string"
        }
      },

तो, क्या OpenAPI विनिर्देश में सरणियों की परिभाषा नहीं है, या क्या यह कनवर्टर गलत कर रहा है और मुझे आइटम टोकन को किसी और चीज़ से बदलने की आवश्यकता है? यदि हां, तो कौन सा?

0
Gary Greenberg 17 अक्टूबर 2020, 05:44

1 उत्तर

सबसे बढ़िया उत्तर

मुझे समाधान मिला। मूल रूप से मैं एक डिफ़ॉल्ट निर्माता के साथ OpenAPI JSON dile को पार्स करने के लिए एक ObjectMapper बना रहा था:

private static final ObjectMapper MAPPER = new ObjectMapper();

वहीं मुझे यह त्रुटि मिल रही थी। मैंने इस लाइन को से बदल दिया है

private static final ObjectMapper MAPPER = Json.mapper();

और सभी त्रुटियां गायब हो गईं। जाहिरा तौर पर, io.swagger.v3.core.util.Json द्वारा निर्मित ऑब्जेक्ट मैपर किसी तरह सभी OpenAPI निर्माणों को संभालने के लिए कॉन्फ़िगर किया गया है।

1
Gary Greenberg 19 अक्टूबर 2020, 21:14