Como escrever uma REST API em Kotlin em 30 minutos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução

Kotlin é uma linguagem de programação moderna que está ganhando popularidade rapidamente no desenvolvimento backend. Graças à sua sintaxe concisa, compatibilidade total com Java e ferramentas poderosas como o framework Ktor, escrever uma REST API em Kotlin leva literalmente 30 minutos. Neste artigo, criaremos uma REST API completa para gerenciar uma lista de tarefas (Todo API). Você aprenderá a configurar o projeto, criar endpoints, conectar um banco de dados e testar a API. Sem teoria desnecessária — apenas prática.



Passo 1: Configuração do projeto e dependências

Para um início rápido, usaremos o IntelliJ IDEA (Community Edition) ou qualquer outro editor. Criaremos um novo projeto Gradle com Kotlin DSL.



Criação da estrutura do projeto

Adicione as seguintes dependências ao arquivo 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")}

Estamos usando:

  • Ktor — um framework assíncrono leve para servidores HTTP.
  • Exposed — ORM para trabalhar com bancos de dados.
  • H2 — banco de dados embutido para desenvolvimento.
  • Kotlinx.serialization — para trabalhar com JSON.


Passo 2: Criação do modelo de dados e conexão com o BD

Vamos definir a estrutura da tabela de tarefas. Crie o arquivo 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 cria a tabela Tasks com três campos: id, title e completed. A função initDatabase() inicializa o banco de dados em memória.



Passo 3: Escrita dos controladores REST API

Agora criaremos o arquivo principal da aplicação Application.kt. Aqui definiremos todos os endpoints.



Configuração básica do 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)}


Implementação dos endpoints CRUD

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

Blogs

Book Recommendations