Validação de dados em Kotlin: bibliotecas, abordagens e exemplos de código

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

Validação de dados em Kotlin: visão geral de bibliotecas e exemplos práticos



A validação de dados é um dos aspectos-chave no desenvolvimento de aplicações confiáveis. Em Kotlin, graças à sua sintaxe concisa e sistema de tipos poderoso, o processo de verificação de dados pode ser não apenas eficiente, mas também expressivo. Neste artigo, veremos bibliotecas populares para validação, suas capacidades e forneceremos exemplos práticos de código.



Por que a validação é necessária em Kotlin?

A validação permite:

  • Garantir a integridade dos dados antes do processamento;
  • Melhorar a experiência do usuário com mensagens de erro claras;
  • Reduzir a carga no banco de dados e na lógica do servidor;
  • Prevenir vulnerabilidades relacionadas a entradas incorretas.


Principais abordagens para validação

Em Kotlin, podemos destacar três abordagens principais:

  1. Anotações — forma declarativa, frequentemente usada com Jakarta Bean Validation (anteriormente JSR-380).
  2. Validação com DSL — criação de validadores usando uma linguagem específica de domínio (ex.: Konform).
  3. Abordagem funcional — uso de funções de ordem superior para composição de regras de verificação.


1. Biblioteca Konform

Konform é uma biblioteca leve para validação de dados em Kotlin que utiliza DSL. Ela é ideal para verificar objetos obtidos de JSON ou formulários.

Exemplo de uso:

import konform.*import konform.dsl.*

data class User( val name: String, val email: String, val age: Int)

fun main() { val userValidator = validation<User> { User::name required { minLength(2) hint "O nome deve ter no mínimo 2 caracteres" maxLength(50) hint "O nome não deve exceder 50 caracteres" } User::email required { pattern(Regex("^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$")) hint "Email inválido" } User::age required { range(18..120) hint "A idade deve estar entre 18 e 120 anos" } }

val user = User("A", "invalid-email", 17) val result = userValidator.validate(user) if (result is ValidationResult.Invalid) { result.errors.forEach { (field, errors) -> println("Campo '$field': ${errors.joinToString(", ")}") } } else { println("Validação aprovada!") }}

Saída:

Campo 'name': O nome deve ter no mínimo 2 caracteresCampo 'email': Email inválidoCampo 'age': A idade deve estar entre 18 e 120 anos


2. Biblioteca Kotlin Validation (KValidation)

KValidation é outra ferramenta popular que oferece tanto anotações quanto DSL. Ela se integra com Kotlin Serialization e suporta objetos aninhados.

Exemplo com anotações:

import io.kvalidation.annotations.*import io.kvalidation.KValidation

@Validatabledata class Address( @NotEmpty(message = "A rua não pode estar vazia") val street: String, @Range(min = 1, max = 9999, message = "O número da casa deve estar entre 1 e 9999") val houseNumber: Int)

@Validatabledata class Person( @NotEmpty(message = "O nome é obrigatório") @Length(min = 2, max = 100, message = "O nome deve ter entre 2 e 100 caracteres") val name: String, @Email(message = "Email inválido") val email: String, @Valid // validação aninhada val address: Address)

fun main() { val person = Person("", "test", Address("", 0)) val violations = KValidation.validate(person) violations.forEach { violation -> println("${violatio

Recommendations