GraphQL em Kotlin: Visão geral das bibliotecas e ferramentas para desenvolvimento de servidor

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

GraphQL em Kotlin: Visão geral completa das bibliotecas e ferramentas



GraphQL é uma linguagem de consulta para APIs e um ambiente de execução para executar essas consultas com seus dados existentes. Ele fornece aos clientes a capacidade de solicitar exatamente os dados de que precisam, tornando-se uma alternativa poderosa ao REST. No ecossistema Kotlin, existem várias bibliotecas maduras para criar a parte do servidor GraphQL. Neste artigo, analisaremos detalhadamente as principais ferramentas, sua sintaxe e exemplos de uso.



Por que Kotlin para GraphQL?

Kotlin, sendo uma linguagem estaticamente tipada que roda na JVM, é excelente para construir esquemas GraphQL type-safe. O compilador Kotlin ajuda a evitar erros na fase de escrita do código, e a sintaxe expressiva torna o código limpo e conciso. As principais bibliotecas para trabalhar com GraphQL em Kotlin incluem:

  • graphql-kotlin (do Expedia Group) — a biblioteca mais popular, fortemente integrada com Spring Boot.
  • KGraphQL — uma alternativa com foco em configuração simples e API minimalista.
  • Apollo Kotlin — uma biblioteca cliente para Android e KMP, mas também oferece recursos de servidor.


Biblioteca graphql-kotlin

graphql-kotlin é um conjunto de bibliotecas para construir servidores GraphQL em Kotlin. A abordagem principal é usar anotações e classes de dados para geração automática de esquemas.



Instalação

Adicione a dependência em build.gradle.kts:

dependencies {    implementation("com.expediagroup:graphql-kotlin-spring-server:7.0.0")    implementation("com.expediagroup:graphql-kotlin-schema-generator:7.0.0")}


Exemplo: Consulta simples

Vamos definir uma classe de dados e um resolver:

import com.expediagroup.graphql.server.operations.Query

data class User(val id: Int, val name: String, val email: String)

class UserQuery : Query { fun getUser(id: Int): User { // Simulação de obtenção do banco de dados return User(id = id, name = "Alice", email = "alice@example.com") }}


O graphql-kotlin gerará automaticamente o esquema. Agora o cliente pode executar a consulta:

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


A resposta conterá apenas os campos solicitados:

{  "data": {    "getUser": {      "name": "Alice",      "email": "alice@example.com"    }  }}


Mutações (alteração de dados)

Para mutações, usa-se a interface Mutation:

import com.expediagroup.graphql.server.operations.Mutation

class UserMutation : Mutation { fun createUser(name: String, email: String): User { // Lógica de criação de usuário return User(id = 2, name = name, email = email) }}


Consulta correspondente:

mutation {  createUser(name: "Bob", email: "bob@example.com") {    id    name  }}


Biblioteca KGraphQL

KGraphQL oferece uma abordagem mais orientada a DSL, sem a necessidade de anotações. O esquema é construído programaticamente.



Instalação

dependencies {    implementation("com.apurebase:kgraphql:0.18.0")    implementation("com.apurebase:kgraphql-ktor:0.18.0") // para Ktor}


Exemplo: Definição de esquema

import com.apurebase.kgraphql.schema.dsl.SchemaBuilder

val schema = SchemaBuilder { query("hello") { resolver { -> "Hello, World!" } }

query("user") { resolver { id: Int -> User(id = id, name = "Charlie", email = "charlie@example.com") } }

mutation("createUser") { resolver { name: String, email: String -> User(id = 3, name = name, email = email) } }}


Em seguida, conecte ao web framework

Recommendations