GraphQL API mit Kotlin: Schritt-für-Schritt-Tutorial für Einsteiger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten
Here is the translated HTML:

Einführung: Warum GraphQL und Kotlin das perfekte Paar für moderne APIs sind

Moderne Webentwicklung erfordert flexible und leistungsfähige APIs. REST, lange Zeit der Standard, führt oft zu den Problemen des Over-Fetching (wenn der Server mehr Daten zurückgibt als benötigt) oder Under-Fetching (wenn mehrere Anfragen erforderlich sind, um vollständige Informationen zu erhalten). GraphQL löst diese Probleme, indem es dem Client ermöglicht, in einer einzigen Abfrage nur die benötigten Daten anzufordern.

Kotlin wiederum ist eine moderne, prägnante und typsichere Sprache, die sich gut für den Aufbau zuverlässiger Backend-Dienste eignet. Dank der graphql-kotlin Bibliothek von Expedia Group wird die Erstellung einer GraphQL-API in Kotlin einfach und intuitiv. In diesem Tutorial erstellen wir Schritt für Schritt eine vollwertige GraphQL-API zur Verwaltung einer Bücherliste.

Was Sie lernen werden:

  • Wie man ein Spring Boot-Projekt mit GraphQL-Unterstützung einrichtet.
  • Wie man ein GraphQL-Schema mit Kotlin-Klassen definiert.
  • Wie man Queries und Mutations implementiert.
  • Wie man die API über die integrierte GraphiQL-IDE testet.


Schritt 1: Projekteinrichtung und Abhängigkeiten

Zuerst erstellen wir ein neues Spring Boot-Projekt. Wir verwenden Gradle (Kotlin DSL) – das ist der Standard für moderne Kotlin-Projekte.



1.1. Das Projekt erstellen

Sie können Spring Initializr verwenden oder die Struktur manuell erstellen. Wir benötigen die folgenden Abhängigkeiten:

  • Spring Web — zum Ausführen des HTTP-Servers.
  • Spring Boot Starter GraphQL — die Hauptintegration.
  • Kotlin Reflection — damit die graphql-kotlin-Bibliothek funktioniert.


1.2. Die build.gradle.kts-Datei

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

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

java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}

repositories { mavenCentral()}

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


1.3. Die application.yml-Konfiguration

spring:  graphql:    graphiql:      enabled: true  # Aktiviert die integrierte IDE zum Testen    schema:      locations: "classpath:graphql/**/"server:  port: 8080


Schritt 2: Schema und Datenmodell definieren

In GraphQL ist das Schema der Vertrag zwischen Client und Server. Die graphql-kotlin Bibliothek ermöglicht es, das Schema automatisch auf der Grundlage von Kotlin-Klassen zu definieren (Code-First-Ansatz). Dadurch entfällt die Notwendigkeit, .graphqls-Dateien manuell zu schreiben.



2.1. Das Datenmodell erstellen

Erstellen wir ein einfaches Book-Modell und ein Repository zum Speichern von Daten im Speicher.

package com.example.graphqlkotlin.model

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


2.2. Repository (In-Memory)

package com.example.graphqlkotlin.repository

import com.example.graphqlkotlin.model.Bookimport org.springframework.stereotype.Repositoryimport java.util.concurrent.ConcurrentHashMap

@Repositoryclass BookRepository { private val books = ConcurrentHashMap( mapOf( "1" to Book("1", "War and Peace", "Leo Tolstoy", 1869), "2" to Book("2", "Crime and Punishment", "Fyodor Dostoevsky", 1866)\

Blogs

Buchempfehlungen