Swagger/OpenAPI जनरेशन Kotlin के लिए: पूर्ण मार्गदर्शिका
आधुनिक REST API के विकास में नियमित कार्यों के स्वचालन की आवश्यकता होती है। सबसे प्रभावी दृष्टिकोणों में से एक OpenAPI (पूर्व में Swagger) स्पेसिफिकेशन के आधार पर कोड जनरेशन है। इस लेख में, हम विस्तार से देखेंगे कि Kotlin भाषा के लिए Swagger/OpenAPI जनरेशन टूल का उपयोग कैसे करें, कौन सी लाइब्रेरी उपलब्ध हैं और उन्हें सही तरीके से कैसे लागू करें।
Swagger/OpenAPI क्या है और Kotlin डेवलपर को इसकी आवश्यकता क्यों है?
OpenAPI YAML या JSON प्रारूप में REST API का वर्णन करने का एक मानक है। यह अनुमति देता है:
- Android ऐप्स के लिए स्वचालित रूप से क्लाइंट कोड जनरेट करना
- सर्वर स्टब्स और कंट्रोलर बनाना
- दस्तावेज़ीकरण को अद्यतित रखना
- उन टीमों में विकास को गति देना जहां बैकएंड और फ्रंटएंड समानांतर रूप से काम करते हैं
Kotlin के लिए, जो सर्वर साइड डेवलपमेंट (Ktor, Spring Boot) और मोबाइल ऐप्स (Android) दोनों के लिए सक्रिय रूप से उपयोग किया जाता है, OpenAPI से कोड जनरेशन एक अपरिहार्य उपकरण बन जाता है।
Kotlin के लिए मुख्य जनरेशन उपकरण
1. OpenAPI Generator (आधिकारिक जनरेटर)
सबसे लोकप्रिय उपकरण OpenAPI Generator है। यह Kotlin सहित कई भाषाओं और फ्रेमवर्क का समर्थन करता है।
Gradle के माध्यम से स्थापना:
plugins { id("org.openapi.generator") version "7.2.0"}
openApiGenerate { generatorName.set("kotlin") inputSpec.set("$rootDir/src/main/resources/openapi.yaml") outputDir.set("$buildDir/generated") packageName.set("com.example.api") configOptions.set(mapOf( "dateLibrary" to "kotlinx-datetime", "useCoroutines" to "true" ))}2. Spring Boot के लिए क्लाइंट जनरेशन
यदि आपका सर्वर Spring Boot पर लिखा गया है, तो आप Kotlin क्लाइंट जनरेट कर सकते हैं:
openApiGenerate { generatorName.set("kotlin-spring") inputSpec.set("${projectDir}/api-spec.yaml") outputDir.set("${buildDir}/generated") apiPackage.set("com.example.api") modelPackage.set("com.example.model") configOptions.set(mapOf( "library" to "spring-boot", "useTags" to "true" ))}3. Ktor के लिए जनरेशन
Ktor Kotlin के लिए एक आधुनिक एसिंक्रोनस फ्रेमवर्क है। OpenAPI Generator इसका भी समर्थन करता है:
openApiGenerate { generatorName.set("kotlin-ktor") inputSpec.set("api.yaml") outputDir.set("generated") configOptions.set(mapOf( "dateLibrary" to "kotlinx-datetime", "serializationLibrary" to "kotlinx_serialization" ))}कार्य का उदाहरण: स्पेसिफिकेशन से कोड तक
एक सरल उदाहरण पर विचार करें। मान लीजिए, हमारे पास एक स्पेसिफिकेशन pets.yaml है:
openapi: "3.0.0"info: title: Pet Store API version: "1.0"paths: /pets: get: operationId: listPets responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Pet'components: schemas: Pet: type: object properties: id: type: integer name: type: stringजनरेशन के बाद हमें मिलेगा:
// Pet.kt (जनरेटेड data class)data class Pet( val id: Int, val name: String)
// PetsApi.kt (जनरेटेड इंटरफ़ेस)interface PetsApi { suspend fun listPets(): List<Pet>}उन्नत सेटिंग्स और अनुकूलन
कस्टम Mustache टेम्पलेट का उपयोग
OpenAPI Generator Mustache टेम्पलेट का उपयोग करता है। आप उन्हें ओवरराइड कर सकते हैं:
openApiGenerate { templateDir.set("$rootDir/templates/kotlin") // जोड़ें पुस्तकालय में भी
Rust में YAML के साथ काम: serde_yaml लाइब्रेरी
C++ में कैशिंग: Redis, डेटा लेयर और अन्य उपकरण
Kotlin Symbol Processing (KSP) गाइड: कोटलिन कोड जनरेशन का पूरा ट्यूटोरियल
Swift में Markdown काम करना (iOS/macOS): Down, SwiftMarkdown लाइब्रेरी