GraphQL für Kotlin: Leistungsstarke Bibliotheken zur API-Erstellung

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

GraphQL-Bibliotheken für Kotlin: Vollständiger Überblick und Praxisleitfaden



GraphQL ist eine Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten zu erhalten, die sie wirklich benötigen. Im Kotlin-Ökosystem gibt es mehrere leistungsstarke Bibliotheken für die Arbeit mit GraphQL, sowohl auf der Server- als auch auf der Client-Seite. In diesem Artikel betrachten wir drei Schlüsselbibliotheken: graphql-kotlin, KGraphQL und Apollo Kotlin, und zeigen Beispiele für deren Verwendung.



1. graphql-kotlin — Offizielle Bibliothek von Expedia Group



graphql-kotlin ist die ausgereifteste und am besten unterstützte Bibliothek zur Erstellung von GraphQL-Servern in Kotlin. Sie nutzt die Sprachfunktionen wie Koroutinen, Datenklassen und Null-Sicherheit voll aus.



Hauptfunktionen:

  • Unterstützung von Kotlin-Koroutinen für asynchrone Verarbeitung
  • Automatische Schema-Generierung aus Datenklassen
  • Integrierte Unterstützung für Subscriptions über WebSocket
  • Integration mit Spring Boot, Ktor und anderen Frameworks
  • Vollständige Unterstützung der GraphQL-Spezifikation vom Juni 2018


Beispiel eines Servers mit graphql-kotlin:

// Datenmodell definierendata class User(val id: String, val name: String, val email: String)

// Query-Resolver erstellenclass UserQuery : Query { fun getUser(id: String): User? { // Logik zum Abrufen des Benutzers return User(id = "1", name = "Ivan Petrov", email = "ivan@example.com") } fun users(): List<User> = listOf( User("1", "Ivan", "ivan@example.com"), User("2", "Maria", "maria@example.com") )}

// Server konfigurieren und startenfun main() { val schema = Schema { query(UserQuery()) } val server = GraphQLServer(schema) server.start(port = 8080)}


Beispiel einer Client-Anfrage:

query {  user(id: "1") {    name    email  }}


2. KGraphQL — Leichte Alternative



KGraphQL ist eine minimalistische Bibliothek zur Erstellung von GraphQL-APIs. Sie zeichnet sich durch einfache Einrichtung und das Fehlen unnötiger Abhängigkeiten aus.



Wesentliche Merkmale:

  • Minimale Größe — etwa 100 KB
  • Erfordert kein Spring Boot oder andere schwere Frameworks
  • Unterstützung von DSL zur Schema-Definition
  • Möglichkeit der Integration mit jedem HTTP-Server


Beispiel für die Verwendung von KGraphQL:

// Modell definierendata class Product(val id: Int, val title: String, val price: Double)

// GraphQL-Schema erstellenval schema = schema { query("products") { resolver { -> listOf( Product(1, "Laptop", 89999.99), Product(2, "Maus", 2499.50) ) } } query("product") { resolver { id: Int -> Product(id, "Produkt #$id", 1000.0) } }}

// Server startenfun main() { val server = KGraphQLServer(schema) server.start(port = 4000)}


3. Apollo Kotlin — Client-Bibliothek von Apollo



Apollo Kotlin ist ein leistungsstarker Client für die Arbeit mit GraphQL-APIs. Er generiert typsicheren Code basierend auf dem GraphQL-Schema, was die Entwicklung erheblich vereinfacht.



Vorteile von Apollo Kotlin:

  • Generierung von Kotlin-Code aus .graphql-Dateien
  • Unterstützung von Caching (normalisierter Cache)
  • Arbeit mit Koroutinen und Flow
  • Automatische Fehlerbehandlung
  • Unterstützung von Mutationen, Abfragen und Subscriptions


Beispiel für die Verwendung von Apollo Kotlin auf dem Client:

// Zuerst die Abfrage in einer .graphql-Datei definieren// file: GetUser.graphql// query GetUser($id: ID!) {//   user(id: $id) {//     id//     name//     email//   }                    

Empfehlungen