0Pricing
Kotlin Academy · Lección

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 entrada main()
  • plugins/ — un archivo por cada función de extensión de Application (Routing, Serialization, Auth, etc.)
  • routes/ — definiciones de rutas agrupadas por dominio
  • models/ — 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.conf para externalizar la configuración
  • Cada controlador de solicitudes trabaja con ApplicationCall para 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

  1. Configuración de un proyecto Ktor: embeddedServer y módulos de aplicación
  2. Enrutamiento y parámetros tipados
  3. Negociación de contenido y kotlinx.serialization
  4. Plugins de autenticación: JWT y sesión
← Volver a Kotlin Academy