Configuración de un proyecto Ktor: embeddedServer y módulos de aplicación
Ponga en marcha una aplicación Ktor, configure Netty y defina módulos de aplicación.
Configuración de un proyecto Ktor: embeddedServer y módulos de aplicación es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Qué es Ktor?
Ktor es el framework asíncrono de Kotlin de JetBrains para crear servidores y clientes. Está diseñado en torno a las corrutinas, se basa en complementos y no tiene comportamientos mágicos: cada funcionalidad que necesita se instala explícitamente. Las aplicaciones de Ktor son programas normales de Kotlin; no requieren un contenedor de DI.
Adición de dependencias de Ktor
Añada el motor de servidor principal (Netty es el más habitual) y la biblioteca de servidor principal de Ktor a su 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: punto de entrada mínimo
La forma más sencilla de iniciar un servidor de Ktor es embeddedServer. Pase la fábrica del motor, el puerto y un bloque de configuración:
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)
}Módulos de la aplicación
En proyectos grandes, divida la configuración en módulos: funciones de extensión de Application. Un módulo instala complementos y registra rutas. Esto hace que el código sea más fácil de probar y combinar:
fun Application.configureRouting() {
routing {
get("/health") { call.respondText("OK") }
}
}
fun Application.configureSerialization() {
install(ContentNegotiation) { json() }
}Llamada a módulos desde main
Llame a las funciones de sus módulos dentro del bloque de embeddedServer para combinarlos:
fun main() {
embeddedServer(Netty, port = 8080) {
configureRouting()
configureSerialization()
configureSecurity()
}.start(wait = true)
}application.conf (configuración HOCON)
La alternativa a embeddedServer consiste en utilizar un archivo application.conf (formato HOCON) y ejecutar la aplicación mediante EngineMain. El archivo de configuración especifica el módulo de entrada y el puerto:
# application.conf
ktor {
deployment { port = 8080 }
application {
modules = [ com.example.ApplicationKt.module ]
}
}EngineMain frente a embeddedServer
Utilice embeddedServer cuando quiera tener control total desde el código (es ideal para pruebas y aplicaciones sencillas). Utilice EngineMain + application.conf cuando quiera una configuración específica del entorno sin recompilar.
El objeto ApplicationCall
Cada controlador de solicitudes recibe un ApplicationCall. Este proporciona acceso a la solicitud (call.request), a la respuesta (call.response) y a funciones auxiliares como call.respondText() y call.respond().
Entorno y registro
Acceda a la configuración del entorno dentro de un módulo mediante environment.config. El registro utiliza SLF4J; añada un logback.xml a src/main/resources/ para configurar los niveles de registro y el formato de salida.
Recarga en caliente durante el desarrollo
Ktor admite la recarga en caliente durante el desarrollo mediante el indicador de modo development. Actívela en application.conf o mediante programación: embeddedServer(Netty, port = 8080, developmentMode = true) { ... }.
Convención de estructura del proyecto
Una estructura típica de un proyecto de Ktor:
Application.kt— punto de entradamain()plugins/— un archivo por cada función de extensión de Application (Routing, Serialization, Auth, etc.)routes/— definiciones de rutas agrupadas por dominiomodels/— clases de datos
Comprobación rápida
¿Cuál es la finalidad de una función de módulo de Application en Ktor?
Recapitulación: configuración de un proyecto de Ktor
Conclusiones clave:
embeddedServer(Engine, port) { ... }.start(wait=true)es el punto de entrada más sencillo- Divida la configuración en funciones de extensión de módulo sobre
Application - Utilice
EngineMain+application.confpara externalizar la configuración - Cada controlador de solicitudes trabaja con
ApplicationCallpara acceder a la solicitud y la respuesta - Agrupe las rutas en un paquete
routes/para facilitar el mantenimiento
Preguntas frecuentes
¿La lección «Configuración de un proyecto Ktor: embeddedServer y módulos de aplicación» es gratis?
Sí — el texto completo de «Configuración de un proyecto Ktor: embeddedServer y módulos de aplicación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Configuración de un proyecto Ktor: embeddedServer y módulos de aplicación»?
Ponga en marcha una aplicación Ktor, configure Netty y defina módulos de aplicación. Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kotlin Academy?
No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Configuración de un proyecto Ktor: embeddedServer y módulos de aplicación»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?
Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Configuración de un proyecto Ktor: embeddedServer y módulos de aplicación
- Enrutamiento y parámetros tipados
- Negociación de contenido y kotlinx.serialization
- Plugins de autenticación: JWT y sesión