การตั้งค่าโปรเจกต์ Ktor: embeddedServer และโมดูลแอปพลิเคชัน
เริ่มต้นแอปพลิเคชัน Ktor กำหนดค่า Netty และกำหนดโมดูลแอปพลิเคชัน
การตั้งค่าโปรเจกต์ Ktor: embeddedServer และโมดูลแอปพลิเคชัน เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
Ktor คืออะไร
Ktor คือเฟรมเวิร์ก Kotlin แบบอะซิงโครนัสของ JetBrains สำหรับสร้างเซิร์ฟเวอร์และไคลเอ็นต์ โดยออกแบบให้ใช้โครูทีนเป็นหลัก ใช้ปลั๊กอิน และไม่มีการทำงานเบื้องหลังที่คาดเดาไม่ได้ ทุกฟีเจอร์ที่ต้องการต้องติดตั้งอย่างชัดเจน แอปพลิเคชัน Ktor เป็นโปรแกรม Kotlin ทั่วไป — ไม่จำเป็นต้องใช้คอนเทนเนอร์ DI
การเพิ่มการอ้างอิงของ Ktor
เพิ่มเอนจินเซิร์ฟเวอร์หลัก (Netty เป็นตัวเลือกที่ใช้กันมากที่สุด) และไลบรารีเซิร์ฟเวอร์ Ktor หลักลงใน build.gradle.kts:
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: จุดเริ่มต้นแบบย่อ
วิธีที่ง่ายที่สุดในการเริ่มเซิร์ฟเวอร์ Ktor คือ embeddedServer โดยส่งแฟกทอรีของเอนจิน พอร์ต และบล็อกการกำหนดค่า:
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)
}โมดูลของแอปพลิเคชัน
สำหรับโปรเจกต์ขนาดใหญ่ ให้แยกการกำหนดค่าออกเป็นโมดูล ซึ่งเป็นฟังก์ชันส่วนขยายของ Application โมดูลจะติดตั้งปลั๊กอินและลงทะเบียนเส้นทาง วิธีนี้ช่วยให้โค้ดเบสทดสอบและประกอบใช้งานได้ง่ายขึ้น:
fun Application.configureRouting() {
routing {
get("/health") { call.respondText("OK") }
}
}
fun Application.configureSerialization() {
install(ContentNegotiation) { json() }
}การเรียกโมดูลจาก main
เรียกใช้ฟังก์ชันโมดูลภายในบล็อก embeddedServer เพื่อประกอบโมดูลเหล่านั้นเข้าด้วยกัน:
fun main() {
embeddedServer(Netty, port = 8080) {
configureRouting()
configureSerialization()
configureSecurity()
}.start(wait = true)
}application.conf (การกำหนดค่า HOCON)
ทางเลือกนอกเหนือจาก embeddedServer คือใช้ไฟล์ application.conf (รูปแบบ HOCON) และเรียกใช้ผ่าน EngineMain ไฟล์กำหนดค่าจะระบุโมดูลเริ่มต้นและพอร์ต:
# application.conf
ktor {
deployment { port = 8080 }
application {
modules = [ com.example.ApplicationKt.module ]
}
}EngineMain เทียบกับ embeddedServer
ใช้ embeddedServer เมื่อต้องการควบคุมทุกอย่างในโค้ด (เหมาะสำหรับการทดสอบและแอปแบบง่าย) ใช้ EngineMain + application.conf เมื่อต้องการการกำหนดค่าตามสภาพแวดล้อมโดยไม่ต้องคอมไพล์ใหม่
ออบเจ็กต์ ApplicationCall
ตัวจัดการคำขอทุกตัวจะได้รับ ApplicationCall ซึ่งให้สิทธิ์เข้าถึงคำขอ (call.request) การตอบกลับ (call.response) และตัวช่วยอย่าง call.respondText() กับ call.respond()
สภาพแวดล้อมและการบันทึกล็อก
เข้าถึงการกำหนดค่าสภาพแวดล้อมภายในโมดูลผ่าน environment.config การบันทึกล็อกใช้ SLF4J ให้เพิ่ม logback.xml ลงใน src/main/resources/ เพื่อกำหนดระดับล็อกและรูปแบบเอาต์พุต
การโหลดซ้ำทันทีระหว่างพัฒนา
Ktor รองรับการโหลดซ้ำทันทีระหว่างการพัฒนาผ่านแฟล็กโหมด development เปิดใช้ใน application.conf หรือโดยทางโปรแกรม: embeddedServer(Netty, port = 8080, developmentMode = true) { ... }
แนวทางการจัดโครงสร้างโปรเจกต์
โครงร่างโปรเจกต์ Ktor โดยทั่วไป:
Application.kt— จุดเริ่มต้นmain()plugins/— หนึ่งไฟล์ต่อฟังก์ชันส่วนขยายของ Application (Routing, Serialization, Auth เป็นต้น)routes/— คำจำกัดความของเส้นทางที่จัดกลุ่มตามโดเมนmodels/— คลาสข้อมูล
ตรวจสอบความเข้าใจ
ฟังก์ชันโมดูลของ Application ใน Ktor มีจุดประสงค์อะไร
ทบทวน: การตั้งค่าโปรเจกต์ Ktor
ประเด็นสำคัญ:
embeddedServer(Engine, port) { ... }.start(wait=true)คือจุดเริ่มต้นที่ง่ายที่สุด- แยกการกำหนดค่าเป็นฟังก์ชันส่วนขยายของโมดูลบน
Application - ใช้
EngineMain+application.confสำหรับการกำหนดค่าภายนอก - ตัวจัดการคำขอทุกตัวทำงานร่วมกับ
ApplicationCallเพื่อเข้าถึงคำขอและการตอบกลับ - จัดกลุ่มเส้นทางไว้ในแพ็กเกจ
routes/เพื่อให้ง่ายต่อการบำรุงรักษา
คำถามที่พบบ่อย
บทเรียน “การตั้งค่าโปรเจกต์ Ktor: embeddedServer และโมดูลแอปพลิเคชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การตั้งค่าโปรเจกต์ Ktor: embeddedServer และโมดูลแอปพลิเคชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การตั้งค่าโปรเจกต์ Ktor: embeddedServer และโมดูลแอปพลิเคชัน”
เริ่มต้นแอปพลิเคชัน Ktor กำหนดค่า Netty และกำหนดโมดูลแอปพลิเคชัน คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การตั้งค่าโปรเจกต์ Ktor: embeddedServer และโมดูลแอปพลิเคชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตั้งค่าโปรเจกต์ Ktor: embeddedServer และโมดูลแอปพลิเคชัน
- การกำหนดเส้นทางและพารามิเตอร์ที่ระบุชนิด
- การเจรจาเนื้อหาและ kotlinx.serialization
- ปลั๊กอินการยืนยันตัวตน: JWT และ Session