0Pricing
Kotlin Academy · บทเรียน

การตั้งค่าโปรเจกต์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การตั้งค่าโปรเจกต์ Ktor: embeddedServer และโมดูลแอปพลิเคชัน
  2. การกำหนดเส้นทางและพารามิเตอร์ที่ระบุชนิด
  3. การเจรจาเนื้อหาและ kotlinx.serialization
  4. ปลั๊กอินการยืนยันตัวตน: JWT และ Session
← กลับไปที่ Kotlin Academy