{"id":580,"date":"2025-06-17T10:41:00","date_gmt":"2025-06-17T08:41:00","guid":{"rendered":"https:\/\/itsonix.laolaweb.com\/?p=580"},"modified":"2026-05-13T10:42:47","modified_gmt":"2026-05-13T08:42:47","slug":"schema-first-mit-graphql-und-kotlin","status":"publish","type":"post","link":"https:\/\/itsonix.eu\/de\/blog\/schema-first-mit-graphql-und-kotlin\/","title":{"rendered":"Schema-First mit GraphQL und Kotlin"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In der Digitalisierungswerkstatt \u2013 einer unserer interdisziplin\u00e4ren Circle \u2013 evaluieren wir neue Technologien und Methoden, um innovative L\u00f6sungen zu entwickeln und moderne Softwareans\u00e4tze praxisnah zu testen. Im Rahmen eines aktuellen Projekts haben wir eine Webanwendung mit Backend und Datenbank konzipiert, bei der neben klassischen CRUD-Operationen auch komplexe statistische Auswertungen im Frontend erm\u00f6glicht werden sollten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Digitalisierungswerkstatt setzt dabei gezielt auf eine Greenfield-Umgebung, um neue Technologien effizient auszuprobieren und deren Potenziale f\u00fcr den realen Einsatz zu bewerten. F\u00fcr dieses Projekt fiel die Wahl auf einen modernen Tech-Stack: Das Frontend wurde mit React und Material UI (MUI) umgesetzt, das Backend in Kotlin entwickelt und PostgreSQL als relationale Datenbank eingesetzt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PostgreSQL \u00fcberzeugte dabei nicht nur durch seine Stabilit\u00e4t und Verbreitung, sondern auch durch die M\u00f6glichkeit, strukturierte Daten nativ im JSON-Format zu speichern und performant zu durchsuchen. Das verschafft uns zus\u00e4tzliche Flexibilit\u00e4t, insbesondere bei sich wandelnden Datenmodellen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Besonders zentral war die Entscheidung f\u00fcr GraphQL gegen\u00fcber REST, um eine flexible Architektur mit einfacher Erweiterbarkeit und einer Public API f\u00fcr Drittsysteme zu schaffen. Mit dem Schema-First-Ansatz wollten wir eine Grundlage schaffen, um \u00c4nderungen an der Schnittstelle zentral zu verwalten und eine automatische Codegenerierung f\u00fcr Frontend und Backend zu erm\u00f6glichen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im folgenden Beitrag werfen wir einen genaueren Blick auf die Vorteile von GraphQL und Kotlin \u2013 insbesondere im Vergleich zu REST und Java \u2013 und erl\u00e4utern, wie wir die Herausforderungen bei der Umsetzung des Schema-First-Ansatzes gel\u00f6st haben.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Warum Kotlin eine moderne Alternative zu Java ist<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bei der technischen Umsetzung unserer Anwendung haben wir uns bewusst f\u00fcr Technologien entschieden, die die moderne Softwareentwicklung erleichtern und gleichzeitig ein hohes Ma\u00df an Stabilit\u00e4t und Skalierbarkeit bieten. Die Wahl der Programmiersprache f\u00fcr das Backend fiel daher auf Kotlin \u2013 eine moderne, statisch typisierte Sprache, die speziell f\u00fcr die Anforderungen zeitgem\u00e4\u00dfer Softwareentwicklung konzipiert wurde.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die von JetBrains entwickelte Sprache bietet im Vergleich zu Java zahlreiche Vorteile, ohne dabei auf die bestehende Java-\u00d6kosystem-Kompatibilit\u00e4t zu verzichten. Ein entscheidender Pluspunkt ist die Null-Sicherheit: Kotlin verhindert viele typische Laufzeitfehler, wie etwa Null-Pointer Exceptions, bereits zur Compile-Zeit. Dar\u00fcber hinaus \u00fcberzeugt Kotlin durch eine pr\u00e4gnante und gut lesbare Syntax, die sich insbesondere bei der Entwicklung von Webanwendungen mit Spring Boot positiv bemerkbar macht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wichtige Vorteile von Kotlin im \u00dcberblick:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Kompakte Syntax:<\/strong> Weniger Boilerplate-Code, schnellere Umsetzung<\/li>\n\n\n\n<li><strong>Lesbarkeit:<\/strong> Implizite Typdefinitionen vereinfachen den Code<\/li>\n\n\n\n<li><strong>Named Arguments:<\/strong> Das Builder-Pattern wird oft \u00fcberfl\u00fcssig<\/li>\n\n\n\n<li><strong>Spring-Boot-Unterst\u00fctzung:<\/strong> Ideal f\u00fcr moderne Web- und API-Anwendungen<\/li>\n\n\n\n<li><strong>Java-Kompatibilit\u00e4t:<\/strong> Bestehende Libraries und Codebasen bleiben nutzbar<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Kombination aus Modernit\u00e4t, Sicherheit und Kompatibilit\u00e4t macht Kotlin besonders geeignet f\u00fcr Backend-Systeme, die \u2013 wie in unserem Projekt \u2013 in Kombination mit GraphQL eine dynamische Schnittstellenstruktur ben\u00f6tigen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">GraphQL \u2013 mehr Flexibilit\u00e4t f\u00fcr moderne APIs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Neben der Wahl der Programmiersprache spielte auch die Architektur der API eine entscheidende Rolle \u2013 insbesondere im Hinblick auf Flexibilit\u00e4t, Wartbarkeit und Effizienz. W\u00e4hrend REST lange Zeit als Standard f\u00fcr Web-APIs galt, haben wir uns in diesem Projekt bewusst f\u00fcr GraphQL entschieden. Die Abfragesprache bietet eine hohe Flexibilit\u00e4t und erm\u00f6glicht es dem Client, genau die Daten abzufragen, die tats\u00e4chlich ben\u00f6tigt werden. Das minimiert nicht nur die Netzwerklast, sondern erh\u00f6ht auch die Effizienz der gesamten Datenverarbeitung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL bietet gegen\u00fcber REST mehrere Vorteile:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Effiziente Daten\u00fcbertragung:<\/strong> Nur relevante Felder werden abgefragt<\/li>\n\n\n\n<li><strong>Aggregierte Datenquellen:<\/strong> Daten aus verschiedenen Quellen lassen sich zusammenfassen<\/li>\n\n\n\n<li><strong>Ein einziger Endpunkt:<\/strong> Zentrale API-Struktur f\u00fcr unterschiedlichste Abfragen<\/li>\n\n\n\n<li><strong>Echtzeitf\u00e4higkeit:<\/strong> Unterst\u00fctzung f\u00fcr WebSockets und Live-Updates<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Trotz der vielen St\u00e4rken bringt GraphQL auch einige Herausforderungen mit sich:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Komplexere Serverlogik:<\/strong> Schemata und Resolver m\u00fcssen sauber gepflegt werden<\/li>\n\n\n\n<li><strong>Leistungsmanagement:<\/strong> Schutzmechanismen gegen zu komplexe oder verschachtelte Abfragen sind notwendig<\/li>\n\n\n\n<li><strong>Nicht f\u00fcr alle APIs geeignet:<\/strong> F\u00fcr einfache, ressourcenbasierte Use Cases kann REST nach wie vor effizienter sein<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Um die Vorteile von GraphQL optimal auszusch\u00f6pfen, ist eine saubere Struktur der API besonders wichtig \u2013 hier setzt der Schema-First-Ansatz an.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schema-First \u2013 Strukturierte API-Entwicklung mit zentralem Modell<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Schema-First-Ansatz bedeutet, dass die gesamte API zun\u00e4chst als GraphQL-Schema definiert wird. Dieses Schema dient als gemeinsame Grundlage f\u00fcr alle Entwicklungsteams und erm\u00f6glicht eine parallele Entwicklung von Frontend und Backend. Gerade bei komplexeren Anwendungen sorgt das f\u00fcr klare Verantwortlichkeiten, reduzierte Abstimmungsaufw\u00e4nde und eine konsistente Umsetzung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In der JavaScript-Welt existieren zahlreiche Tools zur automatischen Codegenerierung aus einem solchen Schema \u2013 f\u00fcr Kotlin war es dagegen notwendig, passende Werkzeuge gezielt auszuw\u00e4hlen und zu kombinieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Grundlage dieses Ansatzes ist die sogenannte SDL (Schema Definition Language) \u2013 eine deklarative Beschreibungssprache f\u00fcr GraphQL-Schnittstellen. In SDL werden Typen, Abfragen und Mutationen formal definiert und dienen anschlie\u00dfend als gemeinsame Referenz f\u00fcr die Codegenerierung in Frontend und Backend. Insbesondere im Schema-First-Ansatz ist SDL der zentrale Ausgangspunkt f\u00fcr eine konsistente API-Architektur.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Toolvergleich \u2013 Generatoren f\u00fcr Kotlin-basierte GraphQL-Projekte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die folgende \u00dcbersicht zeigt eine Auswahl relevanter Codegeneratoren f\u00fcr Kotlin, die wir in unserem Projektkontext evaluiert haben. Die Auswahl erfolgte entlang der Anforderungen an Server- oder Client-Code, SDL-Kompatibilit\u00e4t und Framework-Integration:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Name<\/th><th>Typ<\/th><th>Kompatibilit\u00e4t<\/th><th>Vorteile<\/th><th>Nachteile<\/th><\/tr><\/thead><tbody><tr><td><a href=\"https:\/\/github.com\/ExpediaGroup\/graphql-kotlin\">Expedia Group GraphQL Kotlin Codegen<\/a><\/td><td>Server\/Client<\/td><td>Spring Boot, Ktor, Apollo Federation<\/td><td>Schema-First-Ansatz mit SDL-Unterst\u00fctzung, Generiert Data Classes, Resolver und Client-Code, Vollst\u00e4ndige Integration mit Spring und Ktor<\/td><td>Keine automatische Generierung von komplexen Resolvern<\/td><\/tr><tr><td><a href=\"https:\/\/github.com\/apollographql\/apollo-kotlin\">Apollo Kotlin (ehem. Apollo Android)<\/a><\/td><td>Client<\/td><td>Android, Ktor, OkHttp<\/td><td>Echtzeit-Updates via Subscriptions, Caching und Normalisierung<\/td><td>Keine Server-Generierung<\/td><\/tr><tr><td><a href=\"https:\/\/github.com\/Netflix\/dgs-framework\">Netflix DGS (Domain Graph Service)<\/a><\/td><td>Server<\/td><td>Spring Boot<\/td><td>Integrierte Test-Tools (z.\u202fB. Mocking), SDL-first mit automatisiertem Schema-Export<\/td><td>Keine Client-Generierung<\/td><\/tr><tr><td><a href=\"https:\/\/github.com\/ermadmi78\/kobby\">Kobby Gradle Plugin<\/a><\/td><td>Client<\/td><td>Client-seitig<\/td><td>Erzeugt type-sichere DSLs f\u00fcr komplexe Queries, Anpassbar via Schema-Direktiven<\/td><td>Beta-Status, Weniger Community-Unterst\u00fctzung<\/td><\/tr><tr><td><a href=\"https:\/\/github.com\/kobylynskyi\/graphql-java-codegen\">graphql-java-codegen (kobylynskyi)<\/a><\/td><td>Server\/Client<\/td><td>JVM (Java, Kotlin, Scala)<\/td><td>Unterst\u00fctzt SDL und Introspection, Flexibles Mapping von Scalars<\/td><td>Fokus auf Java, Kotlin-Features begrenzt<\/td><\/tr><tr><td><a href=\"https:\/\/github.com\/leangen\/GraphQL-SPQR\">GraphQL SPQR<\/a><\/td><td>Server<\/td><td>Spring, Quarkus<\/td><td>Code-first-Ansatz, Minimaler Boilerplate<\/td><td>Kein SDL-first-Support<\/td><\/tr><tr><td><a href=\"https:\/\/github.com\/dotansimha\/graphql-code-generator\">The Guild Codegen<\/a><\/td><td>Client<\/td><td>JVM, JavaScript<\/td><td>Einfache Konfiguration f\u00fcr Enums und Input-Typen, Multiplattform-Unterst\u00fctzung<\/td><td>Begrenzte Funktionalit\u00e4t<\/td><\/tr><tr><td><a href=\"https:\/\/github.com\/karatelabs\/karate\">Karate API Testing (GraphQL-Unterst\u00fctzung)<\/a><\/td><td>Testing<\/td><td>Testumgebungen<\/td><td>Automatische Generierung von Test-Code, Integriertes Mocking<\/td><td>Keine Produktiv-Code-Generierung<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Da derzeit kein Generator existiert, der sowohl Server- als auch Client-Code f\u00fcr Kotlin umfassend unterst\u00fctzt, ist es in der Praxis oft notwendig, mehrere spezialisierte Tools zu kombinieren. So lassen sich individuelle Projektanforderungen \u2013 etwa Subscriptions, Typed Queries oder Federation \u2013 gezielt abdecken.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Codegenerierung von GraphQL zu Kotlin \u2013 Potenziale &amp; Stolpersteine<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mit der Wahl des Schema-First-Ansatzes ging auch die Entscheidung einher, m\u00f6glichst viel Code automatisiert zu generieren. Das bringt deutliche Vorteile \u2013 insbesondere im Hinblick auf Konsistenz und Typensicherheit \u2013 erfordert aber auch ein Umdenken im Entwicklungsprozess.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Typische Herausforderungen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Schema-Verwaltung:<\/strong> Zus\u00e4tzliche Strukturen &amp; Konventionen notwendig<\/li>\n\n\n\n<li><strong>Fehlermanagement:<\/strong> Verbesserte Fehlerausgaben gegen\u00fcber Standardmeldungen wie <code>INTERNAL_ERROR<\/code><\/li>\n\n\n\n<li><strong>Framework-Kompatibilit\u00e4t:<\/strong> Nicht alle Bibliotheken sind vollst\u00e4ndig Kotlin-tauglich<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ein zentrales Werkzeug war f\u00fcr uns der GraphQL Kotlin Codegen von Expedia Group. Er bietet eine stabile Integration mit Spring Boot und Ktor, unterst\u00fctzt SDL vollst\u00e4ndig und generiert sowohl Data Classes als auch Resolver. Die automatische Generierung komplexer Business-Resolver ist jedoch nach wie vor nur begrenzt m\u00f6glich \u2013 hier sind weiterhin manuelle Eingriffe notwendig.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Codegenerierung aus einem zentralen Schema bietet eine starke Basis f\u00fcr skalierbare, wartbare Architekturen \u2013 gerade im Zusammenspiel mit Kotlin. Der initiale Mehraufwand f\u00fcr Tooling und Struktur zahlt sich im sp\u00e4teren Projektverlauf durch klare Schnittstellen, weniger Inkonsistenzen und h\u00f6here Geschwindigkeit bei \u00c4nderungen deutlich aus.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit \u2013 moderne APIs effizient entwickeln<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Kombination aus Kotlin und GraphQL bietet ein leistungsstarkes Fundament f\u00fcr die Entwicklung moderner, skalierbarer Webanwendungen. Kotlin \u00fcberzeugt durch seine kompakte Syntax, hohe Typensicherheit und exzellente Integration in bestehende Java-\u00d6kosysteme \u2013 ideal f\u00fcr die Backend-Entwicklung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GraphQL wiederum er\u00f6ffnet neue M\u00f6glichkeiten f\u00fcr flexible API-Architekturen und eine zielgerichtete Datenkommunikation \u2013 besonders in dynamischen Projektkontexten. Der Schema-First-Ansatz und eine durchdachte Codegenerierung erm\u00f6glichen es, technologische Komplexit\u00e4t effizient zu beherrschen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unser Projekt in der IT-Sonix-Digitalisierungswerkstatt zeigt: Mit der richtigen Kombination aus neuen Technologien entstehen Softwarel\u00f6sungen, die sowohl kurzfristig performant als auch langfristig wartbar und ausbauf\u00e4hig sind.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der Digitalisierungswerkstatt \u2013 einer unserer interdisziplin\u00e4ren Circle \u2013 evaluieren wir neue Technologien und Methoden, um innovative L\u00f6sungen zu entwickeln und moderne Softwareans\u00e4tze praxisnah zu testen. Im Rahmen eines aktuellen Projekts haben wir eine Webanwendung mit Backend und Datenbank konzipiert, bei der neben klassischen CRUD-Operationen auch komplexe statistische Auswertungen im Frontend erm\u00f6glicht werden sollten. Die [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":582,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-580","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-softwareentwicklung"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Schema-First mit GraphQL und Kotlin - IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen<\/title>\n<meta name=\"description\" content=\"it Sonix Blog: Schema-First mit GraphQL und Kotlin\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itsonix.eu\/de\/blog\/schema-first-mit-graphql-und-kotlin\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Schema-First mit GraphQL und Kotlin - IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen\" \/>\n<meta property=\"og:description\" content=\"it Sonix Blog: Schema-First mit GraphQL und Kotlin\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itsonix.eu\/de\/blog\/schema-first-mit-graphql-und-kotlin\/\" \/>\n<meta property=\"og:site_name\" content=\"IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-17T08:41:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-13T08:42:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itsonix.eu\/wp-content\/uploads\/2026\/05\/Blogbeitrag_Header_schema.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1840\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Praktikant\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Praktikant\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/\"},\"author\":{\"name\":\"Praktikant\",\"@id\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/#\\\/schema\\\/person\\\/829813e3a66c2dfbb030cd6647f3caf3\"},\"headline\":\"Schema-First mit GraphQL und Kotlin\",\"datePublished\":\"2025-06-17T08:41:00+00:00\",\"dateModified\":\"2026-05-13T08:42:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/\"},\"wordCount\":1313,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/itsonix.eu\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Blogbeitrag_Header_schema.jpg\",\"articleSection\":[\"Softwareentwicklung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/\",\"url\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/\",\"name\":\"Schema-First mit GraphQL und Kotlin - IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/itsonix.eu\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Blogbeitrag_Header_schema.jpg\",\"datePublished\":\"2025-06-17T08:41:00+00:00\",\"dateModified\":\"2026-05-13T08:42:47+00:00\",\"description\":\"it Sonix Blog: Schema-First mit GraphQL und Kotlin\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/#primaryimage\",\"url\":\"https:\\\/\\\/itsonix.eu\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Blogbeitrag_Header_schema.jpg\",\"contentUrl\":\"https:\\\/\\\/itsonix.eu\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Blogbeitrag_Header_schema.jpg\",\"width\":1840,\"height\":800,\"caption\":\"Illustration Schema-First mit GraphQL und Kotlin\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/itsonix.eu\\\/blog\\\/schema-first-mit-graphql-und-kotlin\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Start\",\"item\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Schema-First mit GraphQL und Kotlin\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/\",\"name\":\"IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/#organization\",\"name\":\"IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen\",\"url\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/itsonix.eu\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/itsonix_rgb.png\",\"contentUrl\":\"https:\\\/\\\/itsonix.eu\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/itsonix_rgb.png\",\"width\":1755,\"height\":296,\"caption\":\"IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen\"},\"image\":{\"@id\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/itsonix.eu\\\/de\\\/#\\\/schema\\\/person\\\/829813e3a66c2dfbb030cd6647f3caf3\",\"name\":\"Praktikant\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dcf1b27e4ed416dc1ee2931ab8eac2c1ed8dc060bed9a0d6bb1f0501c05c25d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dcf1b27e4ed416dc1ee2931ab8eac2c1ed8dc060bed9a0d6bb1f0501c05c25d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dcf1b27e4ed416dc1ee2931ab8eac2c1ed8dc060bed9a0d6bb1f0501c05c25d?s=96&d=mm&r=g\",\"caption\":\"Praktikant\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Schema-First mit GraphQL und Kotlin - IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen","description":"it Sonix Blog: Schema-First mit GraphQL und Kotlin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itsonix.eu\/de\/blog\/schema-first-mit-graphql-und-kotlin\/","og_locale":"de_DE","og_type":"article","og_title":"Schema-First mit GraphQL und Kotlin - IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen","og_description":"it Sonix Blog: Schema-First mit GraphQL und Kotlin","og_url":"https:\/\/itsonix.eu\/de\/blog\/schema-first-mit-graphql-und-kotlin\/","og_site_name":"IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen","article_published_time":"2025-06-17T08:41:00+00:00","article_modified_time":"2026-05-13T08:42:47+00:00","og_image":[{"width":1840,"height":800,"url":"https:\/\/itsonix.eu\/wp-content\/uploads\/2026\/05\/Blogbeitrag_Header_schema.jpg","type":"image\/jpeg"}],"author":"Praktikant","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Praktikant","Gesch\u00e4tzte Lesezeit":"7\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/#article","isPartOf":{"@id":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/"},"author":{"name":"Praktikant","@id":"https:\/\/itsonix.eu\/de\/#\/schema\/person\/829813e3a66c2dfbb030cd6647f3caf3"},"headline":"Schema-First mit GraphQL und Kotlin","datePublished":"2025-06-17T08:41:00+00:00","dateModified":"2026-05-13T08:42:47+00:00","mainEntityOfPage":{"@id":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/"},"wordCount":1313,"commentCount":0,"publisher":{"@id":"https:\/\/itsonix.eu\/de\/#organization"},"image":{"@id":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/#primaryimage"},"thumbnailUrl":"https:\/\/itsonix.eu\/wp-content\/uploads\/2026\/05\/Blogbeitrag_Header_schema.jpg","articleSection":["Softwareentwicklung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/","url":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/","name":"Schema-First mit GraphQL und Kotlin - IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen","isPartOf":{"@id":"https:\/\/itsonix.eu\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/#primaryimage"},"image":{"@id":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/#primaryimage"},"thumbnailUrl":"https:\/\/itsonix.eu\/wp-content\/uploads\/2026\/05\/Blogbeitrag_Header_schema.jpg","datePublished":"2025-06-17T08:41:00+00:00","dateModified":"2026-05-13T08:42:47+00:00","description":"it Sonix Blog: Schema-First mit GraphQL und Kotlin","breadcrumb":{"@id":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/#primaryimage","url":"https:\/\/itsonix.eu\/wp-content\/uploads\/2026\/05\/Blogbeitrag_Header_schema.jpg","contentUrl":"https:\/\/itsonix.eu\/wp-content\/uploads\/2026\/05\/Blogbeitrag_Header_schema.jpg","width":1840,"height":800,"caption":"Illustration Schema-First mit GraphQL und Kotlin"},{"@type":"BreadcrumbList","@id":"https:\/\/itsonix.eu\/blog\/schema-first-mit-graphql-und-kotlin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Start","item":"https:\/\/itsonix.eu\/de\/"},{"@type":"ListItem","position":2,"name":"Schema-First mit GraphQL und Kotlin"}]},{"@type":"WebSite","@id":"https:\/\/itsonix.eu\/de\/#website","url":"https:\/\/itsonix.eu\/de\/","name":"IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen","description":"","publisher":{"@id":"https:\/\/itsonix.eu\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itsonix.eu\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/itsonix.eu\/de\/#organization","name":"IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen","url":"https:\/\/itsonix.eu\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/itsonix.eu\/de\/#\/schema\/logo\/image\/","url":"https:\/\/itsonix.eu\/wp-content\/uploads\/2026\/05\/itsonix_rgb.png","contentUrl":"https:\/\/itsonix.eu\/wp-content\/uploads\/2026\/05\/itsonix_rgb.png","width":1755,"height":296,"caption":"IT Sonix - Ihr Partner f\u00fcr individuelle Softwarel\u00f6sungen"},"image":{"@id":"https:\/\/itsonix.eu\/de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/itsonix.eu\/de\/#\/schema\/person\/829813e3a66c2dfbb030cd6647f3caf3","name":"Praktikant","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/5dcf1b27e4ed416dc1ee2931ab8eac2c1ed8dc060bed9a0d6bb1f0501c05c25d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dcf1b27e4ed416dc1ee2931ab8eac2c1ed8dc060bed9a0d6bb1f0501c05c25d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dcf1b27e4ed416dc1ee2931ab8eac2c1ed8dc060bed9a0d6bb1f0501c05c25d?s=96&d=mm&r=g","caption":"Praktikant"}}]}},"_links":{"self":[{"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/posts\/580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/comments?post=580"}],"version-history":[{"count":1,"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/posts\/580\/revisions"}],"predecessor-version":[{"id":583,"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/posts\/580\/revisions\/583"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/media\/582"}],"wp:attachment":[{"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/media?parent=580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/categories?post=580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itsonix.eu\/de\/wp-json\/wp\/v2\/tags?post=580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}