Ktor Framework Guide
Quick Start
// build.gradle.kts
dependencies {
implementation("io.ktor:ktor-server-core:2.3.0")
implementation("io.ktor:ktor-server-netty:2.3.0")
implementation("io.ktor:ktor-server-content-negotiation:2.3.0")
implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.0")
}
// Application.kt
import io.ktor.server.application.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import io.ktor.server.routing.*
import io.ktor.server.response.*
import io.ktor.server.request.*
fun main() {
embeddedServer(Netty, port = 8080) {
install(ContentNegotiation) { json() }
routing {
get("/users") { call.respond(listUsers()) }
get("/users/{id}") {
val id = call.parameters["id"]?.toInt() ?: return@get
call.respond(getUser(id))
}
post("/users") {
val user = call.receive<User>()
call.respond(HttpStatusCode.Created, createUser(user))
}
}
}.start(wait = true)
}
Common Plugins
| Plugin | Purpose |
|---|---|
| ContentNegotiation | JSON/XML serialization |
| Authentication | JWT, Basic, OAuth |
| CORS | Cross-origin resource sharing |
| StatusPages | Error handling |
| Compression | Gzip/Deflate compression |
| Sessions | Cookie/header sessions |
| WebSockets | WebSocket support |
| RateLimit | Request rate limiting |