GraphQL API mit Kotlin: Schritt-für-Schritt-Tutorial für Anfänger

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

Einführung in GraphQL API mit Kotlin

GraphQL ist eine Abfragesprache für APIs, die von Facebook entwickelt wurde und es Clients ermöglicht, nur die Daten anzufordern, die sie tatsächlich benötigen. Im Gegensatz zu REST, wo jeder Endpunkt eine feste Datenstruktur zurückgibt, bietet GraphQL Flexibilität und Kontrolle. Kotlin, als moderne statisch typisierte Sprache für die JVM, eignet sich aufgrund seiner Prägnanz und Sicherheit ideal für die Erstellung solcher APIs. In diesem Tutorial erstellen wir Schritt für Schritt einen einfachen GraphQL-Server mit Kotlin unter Verwendung der Bibliothek graphql-kotlin und Spring Boot.

Am Ende des Artikels werden Sie lernen:

  • Ein Kotlin-Projekt mit Gradle einzurichten
  • Ein GraphQL-Schema zu definieren (Typen, Abfragen, Mutationen)
  • Resolver zur Verarbeitung von Abfragen zu implementieren
  • Die API über GraphQL Playground zu testen


Schritt 1: Projekteinrichtung und Abhängigkeiten

Zunächst erstellen wir ein neues Kotlin-Projekt mit Gradle. Wir verwenden Spring Boot zur Vereinfachung der Konfiguration und graphql-kotlin-spring-server für die GraphQL-Integration.

Erstellung des Basisprojekts

Erstellen Sie ein Projektverzeichnis und die Datei 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" }}

Erstellen Sie dann die Hauptanwendungsklasse in 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)}


Schritt 2: Definition des Datenmodells und des GraphQL-Schemas

GraphQL verwendet eine strenge Typisierung. Definieren wir ein einfaches Datenmodell – ein Buch (Book) und einen Autor (Author).

Erstellung der Datenklassen

Erstellen Sie die Datei 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)

Die Bibliothek graphql-kotlin generiert automatisch GraphQL-Typen basierend auf diesen data-Klassen. Jedes Feld wird zu einem Feld im Schema.

Resolver für Abfragen

Erstellen wir nun einen Service, der die Daten bereitstellt. Erstellen Sie 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", "Krieg und Frieden", Author("a1", "Lew Tolstoi", "Russland"), 1869), Book("2", "Verbrechen und Strafe", Author("a2", "Fjodor Dostojewski", "Russland"), 1866), Book("3", "1984", Author("a3", "George Orwell", "Großbritannien"), 1949) )

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

Blogs

Buchempfehlungen