GraphQL para Kotlin: bibliotecas poderosas para criar APIs

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

Bibliotecas GraphQL para Kotlin: visão geral completa e guia prático



GraphQL é uma linguagem de consulta para APIs que permite aos clientes obter apenas os dados de que realmente precisam. No ecossistema Kotlin, existem várias bibliotecas poderosas para trabalhar com GraphQL, tanto no lado do servidor quanto no lado do cliente. Neste artigo, veremos três bibliotecas principais: graphql-kotlin, KGraphQL e Apollo Kotlin, além de mostrar exemplos de seu uso.



1. graphql-kotlin — biblioteca oficial do Expedia Group



graphql-kotlin é a biblioteca mais madura e suportada para criar servidores GraphQL em Kotlin. Ela utiliza totalmente os recursos da linguagem, como corrotinas, classes de dados e null-safety.



Principais recursos:

  • Suporte a corrotinas Kotlin para processamento assíncrono
  • Geração automática de esquemas a partir de classes de dados
  • Suporte integrado a assinaturas (Subscriptions) via WebSocket
  • Integração com Spring Boot, Ktor e outros frameworks
  • Suporte completo à especificação GraphQL June 2018


Exemplo de servidor com graphql-kotlin:

// Definindo o modelo de dadosdata class User(val id: String, val name: String, val email: String)

// Criando o Query resolverclass UserQuery : Query { fun getUser(id: String): User? { // Lógica para obter o usuário return User(id = "1", name = "Ivan Petrov", email = "ivan@example.com") } fun users(): List<User> = listOf( User("1", "Ivan", "ivan@example.com"), User("2", "Maria", "maria@example.com") )}

// Configuração e inicialização do servidorfun main() { val schema = Schema { query(UserQuery()) } val server = GraphQLServer(schema) server.start(port = 8080)}


Exemplo de consulta do cliente:

query {  user(id: "1") {    name    email  }}


2. KGraphQL — alternativa leve



KGraphQL é uma biblioteca minimalista para criar APIs GraphQL. Ela se destaca pela simplicidade de configuração e pela ausência de dependências desnecessárias.



Principais características:

  • Tamanho mínimo — cerca de 100 KB
  • Não requer Spring Boot ou outros frameworks pesados
  • Suporte a DSL para definição de esquemas
  • Possibilidade de integração com qualquer servidor HTTP


Exemplo de uso do KGraphQL:

// Definindo o modelodata class Product(val id: Int, val title: String, val price: Double)

// Criando o esquema GraphQLval schema = schema { query("products") { resolver { -> listOf( Product(1, "Notebook", 89999.99), Product(2, "Mouse", 2499.50) ) } } query("product") { resolver { id: Int -> Product(id, "Produto #$id", 1000.0) } }}

// Inicializando o servidorfun main() { val server = KGraphQLServer(schema) server.start(port = 4000)}


3. Apollo Kotlin — biblioteca cliente da Apollo



Apollo Kotlin é um cliente poderoso para trabalhar com APIs GraphQL. Ele gera código type-safe com base no esquema GraphQL, o que simplifica significativamente o desenvolvimento.



Vantagens do Apollo Kotlin:

  • Geração de código Kotlin a partir de arquivos .graphql
  • Suporte a cache (cache normalizado)
  • Trabalho com corrotinas e Flow
  • Tratamento automático de erros
  • Suporte a mutações, consultas e assinaturas


Exemplo de uso do Apollo Kotlin no cliente:

// Primeiro, definimos a consulta em um arquivo .graphql// file: GetUser.graphql// query GetUser($id: ID!) {//   user(id: $id) {//     id//     name//     email//   }                    

Recommendations