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
Auch in der Bibliothek
Arbeiten mit ZIP/Archiven in Go (Golang) — vollständige Anleitung
Rate limiting in C++: Bibliotheken und Werkzeuge zur Anfragenkontrolle
Swagger-PHP für PHP: Vollständige Anleitung mit Beispielen
Arbeiten mit Daten in Swift (iOS/macOS): Bibliotheken und Werkzeuge
Arbeiten mit Excel in Swift: Vollständiger Leitfaden zu Bibliotheken und Tools für iOS/macOS