Biblioteca GraphQL Kotlin: guia completo para trabalhar com API
GraphQL é uma linguagem de consulta para APIs que permite que os clientes solicitem apenas os dados de que realmente precisam. No ecossistema Kotlin, existem várias bibliotecas poderosas para trabalhar com GraphQL. Neste artigo, vamos detalhar três bibliotecas principais: graphql-kotlin, Apollo Kotlin e KGraphQL, além de mostrar exemplos de uso.
1. graphql-kotlin — biblioteca servidora do Expedia Group
graphql-kotlin é a biblioteca mais popular para criar servidores GraphQL em Kotlin. Ela suporta totalmente todos os recursos da especificação GraphQL e se integra perfeitamente com os frameworks Spring Boot, Ktor e Micronaut.
Instalação e configuração
Para adicionar a biblioteca, inclua a dependência no build.gradle.kts:
dependencies { // Biblioteca principal implementation("com.expediagroup:graphql-kotlin-spring-server:6.5.0") // Para geração de esquema a partir de anotações implementation("com.expediagroup:graphql-kotlin-schema-generator:6.5.0")}Criando uma API GraphQL simples
Vamos definir um modelo de dados e um resolver para consultas:
// Modelo de dadosdata 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 }}Agora registramos os resolvers na configuração do Spring Boot:
@Configurationclass GraphQLConfig { @Bean fun userQuery(): UserQuery = UserQuery() @Bean fun userMutation(): UserMutation = UserMutation()}Consultas à API
Exemplo de consulta GraphQL:
query { getUser(id: 1) { name email }}A resposta conterá apenas os campos solicitados:
{ "data": { "getUser": { "name": "Anna Petrova", "email": "anna@example.com" } }}2. Apollo Kotlin — biblioteca cliente para Android e JVM
Apollo Kotlin é um poderoso cliente GraphQL desenvolvido especificamente para Kotlin e Android. Ele fornece consultas type-safe e geração automática de código.
Adicionando a biblioteca
dependencies { implementation("com.apollographql.apollo:apollo-runtime:3.8.0") implementation("com.apollographql.apollo:apollo-normalized-cache-sqlite:3.8.0")}Criando uma consulta
Primeiro, defina a consulta GraphQL no arquivo GetUserQuery.graphql:
query GetUser($id: Int!) { getUser(id: $id) { id name email }}Em seguida, use o código gerado em 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 leve para Ktor
KGraphQL é uma biblioteca minimalista para criar servidores GraphQL em aplicações Ktor. Ela
Também na biblioteca
Trabalho com imagens em Go (Golang): bibliotecas e exemplos
Geração de relatórios PDF em PHP: visão geral das bibliotecas e exemplos de código
Spectre.Console para C# (.NET): guia completo com exemplos