Datenvalidierung in Kotlin: Bibliotheken und Ansätze (Kotlin, Java)

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Datenvalidierung in Kotlin: Überblick über Bibliotheken und praktische Beispiele



Datenvalidierung ist einer der Schlüsselaspekte bei der Entwicklung zuverlässiger Anwendungen. Im Kotlin-Ökosystem gibt es mehrere leistungsstarke Bibliotheken, die es ermöglichen, Prüfregeln deklarativ zu beschreiben und umfangreiche bedingte Konstrukte zu vermeiden. In diesem Artikel betrachten wir drei beliebte Werkzeuge: Konad, Valiktor und Kvalidation. Sie erfahren, wie sie funktionieren, und sehen Codebeispiele für reale Aufgaben.



1. Konad — Funktionale Validierung



Konad (Kotlin Validation) verwendet das Konzept von Monaden und funktionaler Programmierung. Anstatt Ausnahmen auszulösen, gibt die Bibliothek Validated<E, A> zurück, wobei E der Fehlertyp und A der erfolgreiche Wert ist. Dies ermöglicht das Sammeln von Fehlern und deren Verarbeitung ohne Seiteneffekte.



Installation

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


Anwendungsbeispiel

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() } { "Name darf nicht leer sein" } .validate { it.age in 18..99 } { "Alter muss zwischen 18 und 99 liegen" }}

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

when (result) { is Valid -> println("Gültiger Benutzer: ${result.value}") is Invalid -> println("Fehler: ${result.errors.joinToString(", ")}") }}


Vorteile von Konad:

  • Reiner funktionaler Stil ohne Ausnahmen
  • Sammeln aller Validierungsfehler
  • Komposition von Validatoren


2. Valiktor — Deklarative Validierung mit fluent API



Valiktor bietet eine intuitive DSL zur Beschreibung von Regeln. Die Bibliothek unterstützt verschachtelte Objekte, Sammlungen und benutzerdefinierte Fehlermeldungen. Es ist eines der beliebtesten Werkzeuge für Kotlin.



Installation

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


Beispiel mit verschachtelten Objekten

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("", "ungültige-email", Address("", "123")) try { validatePerson(person) } catch (e: ConstraintViolationException) { e.constraintViolations.forEach { violation -> println("${violation.property}: ${violation.message}") } }}


Besonderheiten von Valiktor:

  • Vollständige Unterstützung für verschachtelte Objekte und Listen
  • Lokalisierte Fehlermeldungen
  • Integration mit Spring Boot und Ktor


3. Kvalidation — Modulare Validierung basierend auf Annotationen



Kvalidation (früher Koptional) bietet sowohl einen annotierungsbasierten als auch einen programmatischen Ansatz. Die Bibliothek eignet sich besonders zur Überprüfung von Eingabedaten in REST-APIs.



Installation

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


Beispiel mit Annotationen

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

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

Empfehlungen