Bibliotecas GraphQL para Kotlin: guía completa para desarrolladores backend

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Biblioteca GraphQL para Kotlin: guía completa para trabajar con API



GraphQL es un lenguaje de consulta para API que permite a los clientes solicitar únicamente los datos que realmente necesitan. En el ecosistema de Kotlin existen varias bibliotecas potentes para trabajar con GraphQL. En este artículo analizaremos en detalle tres bibliotecas principales: graphql-kotlin, Apollo Kotlin y KGraphQL, y mostraremos ejemplos de su uso.



1. graphql-kotlin — biblioteca de servidor de Expedia Group



graphql-kotlin es la biblioteca más popular para crear servidores GraphQL en Kotlin. Soporta completamente todas las funcionalidades de la especificación GraphQL y se integra perfectamente con los frameworks Spring Boot, Ktor y Micronaut.



Instalación y configuración



Para incluir la biblioteca, agregue la dependencia en build.gradle.kts:



dependencies {    // Biblioteca principal    implementation("com.expediagroup:graphql-kotlin-spring-server:6.5.0")        // Para generar esquemas a partir de anotaciones    implementation("com.expediagroup:graphql-kotlin-schema-generator:6.5.0")}


Creación de una API GraphQL simple



Definamos el modelo de datos y el resolver para las consultas:



// Modelo de datosdata 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, "Ana Petrova", "anna@example.com"), User(2, "Iván 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 }}


Ahora registremos los resolvers en la configuración de Spring Boot:



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


Consultas a la API



Ejemplo de consulta GraphQL:



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


La respuesta contendrá solo los campos solicitados:



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


2. Apollo Kotlin — biblioteca cliente para Android y JVM



Apollo Kotlin es un potente cliente GraphQL desarrollado específicamente para Kotlin y Android. Proporciona consultas con seguridad de tipos y generación automática de código.



Inclusión de la biblioteca



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


Creación de una consulta



Primero, defina la consulta GraphQL en el archivo GetUserQuery.graphql:



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


Luego, use el código generado en 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 — biblioteca ligera para Ktor



KGraphQL es una biblioteca minimalista para crear servidores GraphQL en aplicaciones con Ktor. Ella

Recommendations