Penyiapan Proyek Ktor: embeddedServer dan Modul Application
Siapkan aplikasi Ktor, konfigurasikan Netty, dan definisikan modul aplikasi.
Penyiapan Proyek Ktor: embeddedServer dan Modul Application adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.
Apa Itu Ktor?
Ktor adalah kerangka kerja Kotlin asinkron milik JetBrains untuk membangun server dan klien. Ktor mengutamakan coroutine, berbasis pengaya, dan tidak memiliki keajaiban tersembunyi: setiap fitur yang Anda perlukan dipasang secara eksplisit. Aplikasi Ktor hanyalah program Kotlin biasa — tidak memerlukan wadah DI.
Menambahkan Dependensi Ktor
Tambahkan mesin server inti (Netty adalah yang paling umum) dan pustaka server Ktor inti ke build.gradle.kts Anda:
dependencies {
implementation("io.ktor:ktor-server-core:2.3.12")
implementation("io.ktor:ktor-server-netty:2.3.12")
implementation("ch.qos.logback:logback-classic:1.5.6") // logging
}embeddedServer: Titik Masuk Minimal
Cara paling sederhana untuk memulai server Ktor adalah embeddedServer. Teruskan pabrik mesin, port, dan blok konfigurasi:
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import io.ktor.server.routing.*
import io.ktor.server.response.*
fun main() {
embeddedServer(Netty, port = 8080) {
routing {
get("/") { call.respondText("Hello, Ktor!") }
}
}.start(wait = true)
}Modul Aplikasi
Untuk proyek yang lebih besar, pisahkan konfigurasi ke dalam modul — fungsi ekstensi pada Application. Modul memasang pengaya dan mendaftarkan rute. Hal ini membuat basis kode lebih mudah diuji dan disusun:
fun Application.configureRouting() {
routing {
get("/health") { call.respondText("OK") }
}
}
fun Application.configureSerialization() {
install(ContentNegotiation) { json() }
}Memanggil Modul dari main
Panggil fungsi modul Anda di dalam blok embeddedServer untuk menyusunnya:
fun main() {
embeddedServer(Netty, port = 8080) {
configureRouting()
configureSerialization()
configureSecurity()
}.start(wait = true)
}application.conf (Konfigurasi HOCON)
Alternatif untuk embeddedServer adalah menggunakan berkas application.conf (format HOCON) dan menjalankannya melalui EngineMain. Berkas konfigurasi menentukan modul entri dan port:
# application.conf
ktor {
deployment { port = 8080 }
application {
modules = [ com.example.ApplicationKt.module ]
}
}EngineMain vs embeddedServer
Gunakan embeddedServer jika Anda menginginkan kendali penuh dalam kode (cocok untuk pengujian dan aplikasi sederhana). Gunakan EngineMain + application.conf jika Anda menginginkan konfigurasi khusus lingkungan tanpa mengompilasi ulang.
Objek ApplicationCall
Setiap penangan permintaan menerima ApplicationCall. Objek ini menyediakan akses ke permintaan (call.request), respons (call.response), dan pembantu seperti call.respondText() serta call.respond().
Lingkungan dan Pencatatan Log
Akses konfigurasi lingkungan di dalam modul melalui environment.config. Pencatatan log menggunakan SLF4J; tambahkan logback.xml ke src/main/resources/ untuk mengonfigurasi tingkat log dan format keluaran.
Muat Ulang Langsung dalam Pengembangan
Ktor mendukung muat ulang langsung selama pengembangan melalui penanda mode development. Aktifkan dalam application.conf atau secara terprogram: embeddedServer(Netty, port = 8080, developmentMode = true) { ... }.
Konvensi Struktur Proyek
Tata letak proyek Ktor yang umum:
Application.kt— titik masukmain()plugins/— satu berkas untuk setiap fungsi ekstensi Application (Perutean, Serialisasi, Autentikasi, dan lainnya)routes/— definisi rute yang dikelompokkan berdasarkan domainmodels/— kelas data
Pemeriksaan Singkat
Apa tujuan fungsi modul Application dalam Ktor?
Rekapitulasi: Penyiapan Proyek Ktor
Poin penting:
embeddedServer(Engine, port) { ... }.start(wait=true)adalah titik masuk paling sederhana- Pisahkan konfigurasi ke dalam fungsi ekstensi modul pada
Application - Gunakan
EngineMain+application.confuntuk konfigurasi eksternal - Setiap penangan permintaan bekerja dengan
ApplicationCalluntuk mengakses permintaan dan respons - Kelompokkan rute dalam paket
routes/agar mudah dipelihara
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Penyiapan Proyek Ktor: embeddedServer dan Modul Application” gratis?
Ya — teks lengkap “Penyiapan Proyek Ktor: embeddedServer dan Modul Application” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Penyiapan Proyek Ktor: embeddedServer dan Modul Application”?
Siapkan aplikasi Ktor, konfigurasikan Netty, dan definisikan modul aplikasi. Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Kotlin Academy?
Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Penyiapan Proyek Ktor: embeddedServer dan Modul Application” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?
Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Penyiapan Proyek Ktor: embeddedServer dan Modul Application
- Routing dan Parameter Bertipe
- Negosiasi Konten dan kotlinx.serialization
- Plugin Autentikasi: JWT dan Sesi