Validação de dados em Kotlin: bibliotecas e abordagens (Kotlin, Java)

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 das bibliotecas e exemplos práticos



A validação de dados é um dos principais aspectos do desenvolvimento de aplicações confiáveis. No ecossistema Kotlin, existem várias bibliotecas poderosas que permitem descrever regras de validação de forma declarativa, evitando construções condicionais complexas. Neste artigo, veremos três ferramentas populares: Konad, Valiktor e Kvalidation. Você aprenderá como elas funcionam e verá exemplos de código para tarefas reais.



1. Konad — validação funcional



Konad (Kotlin Validation) utiliza o conceito de mônadas e programação funcional. Em vez de lançar exceções, a biblioteca retorna Validated<E, A>, onde E é o tipo de erro e A é o valor de sucesso. Isso permite acumular erros e tratá-los sem efeitos colaterais.



Instalação

// build.gradle.ktsdependencies {    implementation("io.github.mkobit:konad:0.3.0")}


Exemplo de uso

import konad.*

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

fun validateUser(user: User): Validated<String, User> { return Validated.valid(user) .validate { it.name.isNotBlank() } { "O nome não pode estar em branco" } .validate { it.age in 18..99 } { "A idade deve estar entre 18 e 99" }}

fun main() { val user = User("Alice", 25) val result = validateUser(user)

when (result) { is Valid -> println("Usuário válido: ${result.value}") is Invalid -> println("Erros: ${result.errors.joinToString(", ")}") }}


Vantagens do Konad:

  • Estilo funcional puro sem exceções
  • Acumulação de todos os erros de validação
  • Composição de validadores


2. Valiktor — validação declarativa com fluent API



Valiktor oferece uma DSL intuitiva para descrever regras. A biblioteca suporta objetos aninhados, coleções e mensagens de erro personalizadas. É uma das ferramentas mais populares para Kotlin.



Instalação

// build.gradle.ktsdependencies {    implementation("org.valiktor:valiktor-core:0.12.0")}


Exemplo com objetos aninhados

import org.valiktor.*import org.valiktor.functions.*

data class Address(val city: String, val zip: String)data class Person(val name: String, val email: String, val address: Address)

fun validatePerson(person: Person) { validate(person) { validate(Person::name).isNotBlank().hasSize(min = 2, max = 50) validate(Person::email).isEmail() validate(Person::address) { validate(Address::city).isNotBlank() validate(Address::zip).matches("\\\\d{5}".toRegex()) } }}

fun main() { val person = Person("", "email-inválido", Address("", "123")) try { validatePerson(person) } catch (e: ConstraintViolationException) { e.constraintViolations.forEach { violation -> println("${violation.property}: ${violation.message}") } }}


Características do Valiktor:

  • Suporte completo para objetos aninhados e listas
  • Mensagens de erro localizadas
  • Integração com Spring Boot e Ktor


3. Kvalidation — validação modular baseada em anotações



Kvalidation (anteriormente Koptional) oferece tanto uma abordagem baseada em anotações quanto programática. A biblioteca é especialmente útil para validar dados de entrada em APIs REST.



Instalação

// build.gradle.ktsdependencies {    implementation("com.willowtreeapps:kvalidation:1.0.0")}


Exemplo com anotações

import com.willowtreeapps.kvalidation.annotations.*import com.willowtreeapps.kvalidation.Validator

data class Product( @field:NotBlank(message = "Pro

Recommendations