Kotlin और API: आधुनिक डेवलपमेंट के तीन स्तंभ
\n\nक्या आपने कभी सोचा है कि कुछ ऐप्स फ्लैगशिप फोन पर भी धीमे क्यों चलते हैं, जबकि अन्य बेहद तेज़? राज़ अक्सर हार्डवेयर में नहीं, बल्कि सर्वर से उनके संवाद करने के तरीके में छिपा होता है। अगर आप Kotlin में लिख रहे हैं — चाहे वह Ktor पर बैकएंड हो या Android ऐप — देर-सबेर आपको चुनना होगा: REST, GraphQL या gRPC?
\n\nPythonLib पर हम टेक्नोलॉजी को गहराई से समझना पसंद करते हैं। आज हम Kotlin में API के तीन तरीकों को विस्तार से समझेंगे। कोई बकवास नहीं: सिर्फ कोड, तुलना और वास्तविक उदाहरण। चलिए शुरू करते हैं!
\n\nKotlin में REST API: क्लासिक जो कभी पुराना नहीं होता
\n\nREST एक ब्लैक सूट की तरह है: हर जगह उपयुक्त, सरल और समझने में आसान। Kotlin में REST के लिए दो मुख्य विकल्प हैं: Ktor (सर्वर साइड) और Retrofit (क्लाइंट साइड)।
\n\nKtor पर सर्वर: 5 मिनट में API बनाएं
\n\nKtor JetBrains द्वारा विशेष रूप से Kotlin के लिए बनाया गया फ्रेमवर्क है। यह एसिंक्रोनस, हल्का और अनावश्यक डिपेंडेंसी नहीं थोपता।
\n\n// build.gradle.kts\nimplementation("io.ktor:ktor-server-netty:2.3.7")\nimplementation("io.ktor:ktor-server-content-negotiation:2.3.7")\nimplementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7")\n\nअब सर्वर कोड:
\n\nimport io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.routing.*\nimport io.ktor.server.response.*\nimport io.ktor.serialization.kotlinx.json.*\nimport io.ktor.server.plugins.contentnegotiation.*\nimport kotlinx.serialization.Serializable\n\n@Serializable\ndata class User(val id: Int, val name: String, val email: String)\n\nfun main() {\n embeddedServer(Netty, port = 8080) {\n install(ContentNegotiation) {\n json()\n }\n routing {\n get("/api/users") {\n val users = listOf(\n User(1, "अन्ना", "anna@example.com"),\n User(2, "बोरिस", "boris@example.com")\n )\n call.respond(users)\n }\n get("/api/users/{id}") {\n val id = call.parameters["id"]?.toIntOrNull()\n if (id != null) {\n call.respond(User(id, "टेस्ट", "test@example.com"))\n } else {\n call.respondText("गलत ID", status = io.ktor.http.HttpStatusCode.BadRequest)\n }\n }\n }\n }.start(wait = true)\n}\n\nयह कोड दो एंडपॉइंट के साथ एक पूर्ण Kotlin REST API है। Ktor kotlinx.serialization की मदद से डेटा को JSON में बदलता है।
Retrofit पर क्लाइंट: किसी भी API से जुड़ें
\n\nRetrofit Android डेवलपमेंट का डी-फैक्टो स्टैंडर्ड है। यह कोरूटीन की बदौलत Kotlin के साथ पूरी तरह काम करता है।
\n\n// build.gradle.kts\nimplementation("com.squareup.retrofit2:retrofit:2.9.0")\nimplementation("com.squareup.retrofit2:converter-gson:2.9.0")\nimplementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")\n\nइंटरफ़ेस घोषित करें:
\n\ninterface ApiService {\n @GET("users")\n suspend fun getUsers(): List<User>\n\n @GET("users/{id}")\n suspend fun getUser(@Path("id") userId: Int): User\n\n @POST("users")\n suspend fun createUser(@Body user: User): User\n}\n\nक्लाइंट बनाएं और रिक्वेस्ट करें:
\n\nval retrofit = Retrofit.Builder()\n .baseUrl("https://api.example.com/")\n .addConverterFactory(GsonConverterFactory.create())\n .build()\n\nval service = retrofit.create(ApiService::class.java)\n\n// कोरूटीन में\nGlobalScope.launch {\n val users = service.getUsers()\n println(users)\n}\n\nREST के फायदे: सरलता, HTTP के ज़रिए कैशिंग, बड़ा समुदाय।
\nनुकसान: over-fetching और under-fetching — अक्सर ज़रूरत से ज़्यादा या कम डेटा मिलता है।