Bibliotecas GraphQL para Kotlin: uma visão geral completa para desenvolvedores backend

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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

Recommendations