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
También en la biblioteca
Envío de correo electrónico en Swift (iOS/macOS): MFMailComposeViewController y SMTP
ts-jest para TypeScript: guía completa con ejemplos
Monitoreo de aplicaciones Go (Golang): bibliotecas y herramientas
Métricas de Prometheus en Go (Golang): guía completa de monitoreo