Ktor و بکاند؛ کاتلین پشت صحنه هم بلده
کاتلین فقط اندروید نیست؛ میتونه API هم بسازه، مثل آدم حسابی.
Ktor چیه؟
Ktor فریمورک سبک JetBrains برای ساخت سرویس و API با کاتلینه. برای میکروسرویس، APIهای کوچک و پروژههای Kotlin-first انتخاب جذابیه. نه همیشه جای Spring رو میگیره، نه بچهبازیه؛ ابزار درست برای جای درست.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
Route ساده
در بکاند route مشخص میکنه کاربر وقتی به یک مسیر میاد، چی دریافت کنه. مثل تابلوهای راهنمایی؛ `/hello` یعنی سلام بده، نه اینکه کاربر رو بفرستی پارکینگ.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
fun Application.module() {
routing {
get("/hello") {
call.respondText("سلام از Ktor")
}
}
}
در مسیر /hello پاسخ میگیری: سلام از Ktor
داده JSON با data class
برای response ساختارمند از data class استفاده کن. با serialization میتونی JSON برگردونی و کلاینت هم راحتتر مصرفش کنه.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
@Serializable
data class ApiMessage(
val message: String,
val status: String
)
get("/status") {
call.respond(ApiMessage("همهچی اوکیه", "ok"))
}
در مسیر /status پاسخ JSON شبیه این است:
{"message":"همهچی اوکیه","status":"ok"}نکته معماری
route رو با منطق کسبوکار قاطی نکن. route فقط در ورودی باشه، سرویسها کار اصلی رو انجام بدن. وگرنه فایل route تبدیل میشه به هیولایی که حتی خودت هم از باز کردنش میترسی.
مثال را با چند مقدار دیگر هم امتحان کن؛ چون برنامهنویسی با نگاه کردن یاد گرفته نمیشود، با خراب کردن و درست کردن جا میافتد.
نتیجه این درس 🎯
Ktor نشان میدهد Kotlin فقط برای Android نیست؛ پشت سرور هم میتواند API تمیز بسازد. route، data class و پاسخ JSON پایهی یک بکاند درستوحسابیاند.
تمرین! 🧠
یک route فرضی بنویس که `/version` را جواب بدهد و متن نسخه برنامه را برگرداند.
fun Application.module() {
routing {
get("/version") {
call.respondText("DiCode API v1.0")
}
}
}
در مسیر /version پاسخ میگیری: DiCode API v1.0