Cómo escribir una API REST en Kotlin en 30 minutos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción

Kotlin es un lenguaje de programación moderno que está ganando popularidad rápidamente en el desarrollo backend. Gracias a su sintaxis concisa, compatibilidad total con Java y potentes herramientas como el framework Ktor, escribir una API REST en Kotlin toma literalmente 30 minutos. En este artículo crearemos una API REST completa para gestionar una lista de tareas (Todo API). Aprenderás a configurar el proyecto, crear endpoints, conectar una base de datos y probar la API. Sin teoría innecesaria, solo práctica.



Paso 1: Configuración del proyecto y dependencias

Para un inicio rápido, usaremos IntelliJ IDEA (Community Edition) o cualquier otro editor. Crearemos un nuevo proyecto Gradle con Kotlin DSL.



Creación de la estructura del proyecto

Agrega las siguientes dependencias al archivo build.gradle.kts:

plugins {    kotlin("jvm") version "1.9.22"    application}

repositories { mavenCentral()}

dependencies { implementation("io.ktor:ktor-server-core:2.3.7") implementation("io.ktor:ktor-server-netty:2.3.7") implementation("io.ktor:ktor-server-content-negotiation:2.3.7") implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.7") implementation("org.jetbrains.exposed:exposed-core:0.44.1") implementation("org.jetbrains.exposed:exposed-dao:0.44.1") implementation("org.jetbrains.exposed:exposed-jdbc:0.44.1") implementation("com.h2database:h2:2.2.224") implementation("ch.qos.logback:logback-classic:1.4.14")}

application { mainClass.set("ApplicationKt")}

Usamos:

  • Ktor — un framework asíncrono ligero para servidores HTTP.
  • Exposed — ORM para trabajar con bases de datos.
  • H2 — base de datos integrada para desarrollo.
  • Kotlinx.serialization — para trabajar con JSON.


Paso 2: Creación del modelo de datos y conexión a la BD

Definamos la estructura de la tabla de tareas. Crea el archivo Database.kt:

import org.jetbrains.exposed.sql.Tableimport org.jetbrains.exposed.sql.insertimport org.jetbrains.exposed.sql.selectAllimport org.jetbrains.exposed.sql.transactions.transaction

object Tasks : Table() { val id = integer("id").autoIncrement() val title = varchar("title", 255) val completed = bool("completed").default(false)

override val primaryKey = PrimaryKey(id)}

data class Task(val id: Int, val title: String, val completed: Boolean)

fun initDatabase() { Database.connect("jdbc:h2:mem:test", driver = "org.h2.Driver") transaction { SchemaUtils.create(Tasks) }}

Este código crea la tabla Tasks con tres campos: id, title y completed. La función initDatabase() inicializa la base de datos en memoria.



Paso 3: Escritura de los controladores REST API

Ahora creemos el archivo principal de la aplicación Application.kt. Aquí definiremos todos los endpoints.



Configuración básica del servidor

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.*import io.ktor.serialization.kotlinx.json.*import io.ktor.server.plugins.contentnegotiation.*

fun main() { embeddedServer(Netty, port = 8080) { install(ContentNegotiation) { json() } initDatabase() configureRouting() }.start(wait = true)}


Implementación de los endpoints CRUD

fun Application.configureRouting() {    routing {        // Obtener todas las tareas        get("/tasks") {            val tasks = transaction {                Tasks.selectAll().map { row ->                    Task(                        id = row[Tasks.id],                

Blogs

Book Recommendations