GraphQL API con Kotlin: tutorial paso a paso para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a GraphQL API con Kotlin

GraphQL es un lenguaje de consultas para API, desarrollado por Facebook, que permite a los clientes solicitar solo los datos que realmente necesitan. A diferencia de REST, donde cada endpoint devuelve una estructura de datos fija, GraphQL brinda flexibilidad y control. Kotlin, al ser un lenguaje moderno de tipado estático para la JVM, es ideal para crear este tipo de API gracias a su concisión y seguridad. En este tutorial, crearemos paso a paso un servidor GraphQL simple en Kotlin utilizando la librería graphql-kotlin y Spring Boot.

Al final del artículo, aprenderás a:

  • Configurar un proyecto Kotlin con Gradle
  • Definir un esquema GraphQL (tipos, consultas, mutaciones)
  • Implementar resolvers para procesar consultas
  • Probar la API a través de GraphQL Playground


Paso 1: Configuración del proyecto y dependencias

Para comenzar, crearemos un nuevo proyecto Kotlin usando Gradle. Usaremos Spring Boot para simplificar la configuración y graphql-kotlin-spring-server para la integración de GraphQL.

Creación del proyecto base

Cree un directorio para el proyecto y el archivo 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" }}

Luego, cree la clase principal de la aplicación en 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)}


Paso 2: Definición del modelo de datos y esquema GraphQL

GraphQL utiliza tipado estricto. Definamos un modelo de datos simple: un libro (Book) y un autor (Author).

Creación de las clases de datos

Cree el archivo 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)

La librería graphql-kotlin generará automáticamente los tipos GraphQL basados en estas data classes. Cada campo se convertirá en un campo del esquema.

Resolvers para consultas

Ahora crearemos un servicio que proporcionará los datos. Cree 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 y paz", Author("a1", "León Tolstói", "Rusia"), 1869), Book("2", "Crimen y castigo", Author("a2", "Fiódor Dostoyevski", "Rusia"), 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