Ktor Client para Kotlin: guia completo com exemplos práticos
O Ktor Client é uma biblioteca poderosa, leve e multiplataforma para realizar requisições HTTP na linguagem Kotlin. Desenvolvida pela JetBrains, faz parte do ecossistema Ktor e oferece uma API assíncrona baseada em corrotinas para interagir com servidores web. Diferente de muitos outros clientes HTTP, o Ktor Client foi projetado desde o início para funcionar em várias plataformas: JVM, Android, iOS, macOS, Linux, Windows e JavaScript (via Kotlin/JS). Isso o torna a escolha ideal para o desenvolvimento de aplicativos multiplataforma com Kotlin Multiplatform (KMP).
Por que usar o Ktor Client? No desenvolvimento moderno, praticamente nenhum aplicativo funciona sem interagir com APIs remotas. Seja para carregar dados de um serviço REST, enviar formulários, fazer upload de arquivos ou trabalhar com WebSockets, um cliente HTTP é uma ferramenta fundamental. O Ktor Client oferece não apenas recursos básicos de requisições GET e POST, mas todo um ecossistema de plugins (ou "engines") que permitem configurar serialização (JSON, XML, Protobuf), compressão, logging, autenticação, tentativas de repetição e muito mais. Sua principal vantagem é a assincronicidade total baseada em corrotinas Kotlin, garantindo alta performance e código conciso sem callbacks.
A biblioteca possui uma arquitetura modular. Você adiciona apenas os componentes que seu projeto realmente precisa: o cliente base, a engine específica (por exemplo, OkHttp para Android/JVM ou Darwin para iOS), o serializador e os plugins necessários. Isso minimiza o tamanho do aplicativo final e evita conflitos de dependências. O Ktor Client é ativamente desenvolvido, possui excelente documentação e é apoiado pela comunidade Kotlin.
Instalação
O Ktor Client é distribuído através do sistema de build Gradle (ou Maven). Como não é um pacote Python, o comando pip install não é utilizado. Abaixo estão as instruções precisas para adicionar as dependências ao seu arquivo build.gradle.kts.
Importante: As versões das bibliotecas devem ser compatíveis. Recomenda-se usar a versão estável mais recente do repositório oficial Maven Central. No momento da escrita deste artigo, a versão atual é 2.3.12.
// build.gradle.kts (Gradle Kotlin DSL)
// 1. Adicione o repositório (geralmente já existe)
repositories {
mavenCentral()
}
// 2. Adicione as dependências no bloco dependencies
dependencies {
// Cliente base (obrigatório)
implementation("io.ktor:ktor-client-core:2.3.12")
// Engine - escolha uma das opções:
// Para JVM (usa Java HttpClient ou OkHttp)
implementation("io.ktor:ktor-client-okhttp:2.3.12") // Recomendado para Android/JVM
// implementation("io.ktor:ktor-client-java:2.3.12") // Alternativa para JVM
// Para iOS/macOS (nativo Darwin)
// implementation("io.ktor:ktor-client-darwin:2.3.12")
// Para JavaScript
// implementation("io.ktor:ktor-client-js:2.3.12")
// Para Windows/Linux (Curl)
// implementation("io.ktor:ktor-client-curl:2.3.12")
// Plugins (opcionais, mas muito úteis):
// Serialização JSON (Gson ou Kotlinx Serialization)
implementation("io.ktor:ktor-client-content-negotiation:2.3.12")
implementation("io.ktor:ktor-serialization-gson:2.3.12")
// ou implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.12")
// Logging
implementation("io.ktor:ktor-client-logging:2.3.12")
// Para trabalhar com WebSockets
// implementation("io.ktor:ktor-client-websockets:2.3.12")
}
Se você usa Maven, as dependências serão semelhantes. Após adicionar as dependências, sincronize o projeto (Sync Project with Gradle Files).
Início rápido: exemplo mínimo funcional
Vamos escrever um programa simples que faz uma requisição GET a uma API pública e exibe o