GraphQL API com Kotlin: tutorial passo a passo para iniciantes

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

Introdução à API GraphQL com Kotlin

GraphQL é uma linguagem de consulta para APIs, desenvolvida pelo Facebook, que permite que os clientes solicitem apenas os dados de que realmente precisam. Ao contrário do REST, onde cada endpoint retorna uma estrutura de dados fixa, o GraphQL oferece flexibilidade e controle. Kotlin, sendo uma linguagem moderna e estaticamente tipada para a JVM, é ideal para criar tais APIs devido à sua concisão e segurança. Neste tutorial, criaremos passo a passo um servidor GraphQL simples em Kotlin usando a biblioteca graphql-kotlin e Spring Boot.

Ao final do artigo, você aprenderá:

  • Configurar um projeto Kotlin com Gradle
  • Definir um esquema GraphQL (tipos, consultas, mutações)
  • Implementar resolvedores para processar consultas
  • Testar a API através do GraphQL Playground


Passo 1: Configuração do projeto e dependências

Para começar, criaremos um novo projeto Kotlin usando Gradle. Usaremos Spring Boot para simplificar a configuração e graphql-kotlin-spring-server para integração com GraphQL.

Criação do projeto base

Crie um diretório para o projeto e o arquivo build.gradle.kts:

plugins {    id("org.springframework.boot") version "3.2.0"    id("io.spring.dependency-management") version "1.1.4"    kotlin("jvm") version "1.9.21"    kotlin("plugin.spring") version "1.9.21"}

group = "com.example"version = "0.0.1-SNAPSHOT"

java { sourceCompatibility = JavaVersion.VERSION_17}

repositories { mavenCentral()}

dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("com.expediagroup:graphql-kotlin-spring-server:7.0.1") implementation("com.expediagroup:graphql-kotlin-schema-generator:7.0.1") testImplementation("org.springframework.boot:spring-boot-starter-test")}

tasks.withType { kotlinOptions { freeCompilerArgs += "-Xjsr305=strict" jvmTarget = "17" }}

Em seguida, crie a classe principal da aplicação em src/main/kotlin/com/example/Application.kt:

package com.example

import org.springframework.boot.autoconfigure.SpringBootApplicationimport org.springframework.boot.runApplication

@SpringBootApplicationclass Application

fun main(args: Array<String>) { runApplication<Application>(*args)}


Passo 2: Definição do modelo de dados e esquema GraphQL

GraphQL usa tipagem estrita. Vamos definir um modelo de dados simples — um livro (Book) e um autor (Author).

Criação das classes de dados

Crie o arquivo src/main/kotlin/com/example/model/Book.kt:

package com.example.model

data class Book( val id: String, val title: String, val author: Author, val year: Int)

data class Author( val id: String, val name: String, val nationality: String)

A biblioteca graphql-kotlin gerará automaticamente os tipos GraphQL com base nessas classes de dados. Cada campo se tornará um campo no esquema.

Resolvedores para consultas

Agora, crie um serviço que fornecerá os dados. Crie src/main/kotlin/com/example/service/BookService.kt:

package com.example.service

import com.example.model.Authorimport com.example.model.Bookimport org.springframework.stereotype.Service

@Serviceclass BookService { private val books = mutableListOf( Book("1", "Guerra e Paz", Author("a1", "Liev Tolstói", "Rússia"), 1869), Book("2", "Crime e Castigo", Author("a2", "Fiódor Dostoiévski", "Rússia"), 1866), Book("3", "1984", Author("a3", "George Orwell", "Reino Unido"), 1949) )

fun getAllBooks(): List<Book> = books fun getBookById(id: String): Book? = books.find { it

Blogs

Book Recommendations