GraphQL-Bibliotheken für Kotlin: Vollständiger Überblick für Backend-Entwickler

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-Bibliothek Kotlin: Vollständige Anleitung zur Arbeit mit APIs



GraphQL ist eine Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten anzufordern, die sie tatsächlich benötigen. Im Kotlin-Ökosystem gibt es mehrere leistungsstarke Bibliotheken für die Arbeit mit GraphQL. In diesem Artikel werden wir die drei wichtigsten Bibliotheken im Detail betrachten: graphql-kotlin, Apollo Kotlin und KGraphQL, und Beispiele für ihre Verwendung zeigen.



1. graphql-kotlin – Serverbibliothek von Expedia Group



graphql-kotlin ist die beliebteste Bibliothek zur Erstellung von GraphQL-Servern in Kotlin. Sie unterstützt vollständig alle Funktionen der GraphQL-Spezifikation und integriert sich hervorragend mit den Frameworks Spring Boot, Ktor und Micronaut.



Installation und Konfiguration



Fügen Sie die Abhängigkeit in build.gradle.kts hinzu:



dependencies {    // Hauptbibliothek    implementation("com.expediagroup:graphql-kotlin-spring-server:6.5.0")        // Für die Schema-Generierung aus Annotationen    implementation("com.expediagroup:graphql-kotlin-schema-generator:6.5.0")}


Erstellung einer einfachen GraphQL-API



Definieren wir ein Datenmodell und einen Resolver für Abfragen:



// Datenmodelldata class User(val id: Int, val name: String, val email: String)

// Query-Resolverclass UserQuery : Query { fun getUser(id: Int): User? { return users.find { it.id == id } } companion object { val users = listOf( User(1, "Anna Petrova", "anna@example.com"), User(2, "Ivan Sidorov", "ivan@example.com") ) }}

// Mutation-Resolverclass UserMutation : Mutation { fun createUser(name: String, email: String): User { val newUser = User(users.size + 1, name, email) users.add(newUser) return newUser }}


Jetzt registrieren wir die Resolver in der Spring Boot-Konfiguration:



@Configurationclass GraphQLConfig {    @Bean    fun userQuery(): UserQuery = UserQuery()        @Bean    fun userMutation(): UserMutation = UserMutation()}


API-Abfragen



Beispiel einer GraphQL-Abfrage:



query {  getUser(id: 1) {    name    email  }}


Die Antwort enthält nur die angeforderten Felder:



{  "data": {    "getUser": {      "name": "Anna Petrova",      "email": "anna@example.com"    }  }}


2. Apollo Kotlin – Client-Bibliothek für Android und JVM



Apollo Kotlin ist ein leistungsstarker GraphQL-Client, der speziell für Kotlin und Android entwickelt wurde. Er bietet typsichere Abfragen und automatische Codegenerierung.



Einbindung der Bibliothek



dependencies {    implementation("com.apollographql.apollo:apollo-runtime:3.8.0")    implementation("com.apollographql.apollo:apollo-normalized-cache-sqlite:3.8.0")}


Erstellung einer Abfrage



Definieren Sie zunächst eine GraphQL-Abfrage in der Datei GetUserQuery.graphql:



query GetUser($id: Int!) {  getUser(id: $id) {    id    name    email  }}


Verwenden Sie dann den generierten Code in Kotlin:



val apolloClient = ApolloClient.builder()    .serverUrl("http://localhost:8080/graphql")    .build()

suspend fun fetchUser(userId: Int): User? { val response = apolloClient .query(GetUserQuery(userId)) .execute() return response.data?.getUser?.let { user -> User( id = user.id, name = user.name, email = user.email ) }}


3. KGraphQL – Leichtgewichtige Bibliothek für Ktor



KGraphQL ist eine minimalistische Bibliothek zur Erstellung von GraphQL-Servern in Ktor-Anwendungen. Sie

Empfehlungen