Dominik Kress ist Software Engineer mit Heimat im E-Commerce. In seiner langjährigen Arbeit bei der größten Retail-Gruppe Europas hilft er bei der Modernisierung der internationalen Onlineshop-Systeme. Bei der Transformation von einem klassischen On-Premise-Monolithen zu einer Cloud-basierten Self-Contained-Systems-Architektur entwickelte und vertiefte sich seine Liebe zum Thema APIs. Sowohl im Umfeld seiner Arbeit als auch in privaten Projekten probiert er sich leidenschaftlich gerne an neuen Technologien, Spezifikationen und Methodiken. Daher ist für ihn der Austausch von Wissen und Erfahrungen auf Veranstaltungen und Konferenzen, die er auch gerne selbst nebenbei organisiert, besonders wichtig.
Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+: www.dpunkt.plus |
Dominik Kress
GraphQL
Eine Einführung in APIs mit GraphQL
Dominik Kress
Lektorat: Melanie Andrisek
Copy-Editing: Claudia Lötschert, www.richtiger-text.de
Satz: Da-TeX Gerd Blumenstein, Leipzig, www.da-tex.de
Herstellung: Stefanie Weidner
Umschlaggestaltung: Helmut Kraus, www.exclam.de
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
ISBN:
Print 978-3-86490-784-5
PDF 978-3-96910-121-6
ePub 978-3-96910-122-3
mobi 978-3-96910-123-0
1. Auflage 2021
Copyright © 2021 dpunkt.verlag GmbH
Wieblinger Weg 17
69123 Heidelberg
Hinweis:
Dieses Buch wurde auf PEFC-zertifiziertem Papier aus nachhaltiger Waldwirtschaft gedruckt. Der Umwelt zuliebe verzichten wir zusätzlich auf die Einschweißfolie.
Schreiben Sie uns:
Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es unswissen: [email protected].
Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.
Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.
Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.
5 4 3 2 1 0
Vorwort
Schon seit ich denken kann, fasziniert mich das Internet. Jemand am anderen Ende der Welt tippt etwas in seinen Computer, und ich bekomme diese Eingabe Tausende Kilometer entfernt zu sehen. Wie das genau funktioniert, war für mich schon immer eine der spannendsten Fragen.
Als ich dann irgendwann mit meinem Studium der Softwareentwicklung begann, konnte ich die Vorlesung »Verteilte Systeme« kaum abwarten. Doch als es endlich so weit war, kam die Ernüchterung: Das Internet bestand laut meinem Professor aus komplexen J2EE-Webservices, die gigantische XML-Strukturen über noch größere SOAP-Schnittstellen schieben.
Das hatte ich mir alles aufregender vorgestellt. Dabei liegt das Studium mit meinem Abschluss 2017 nicht mal in so ferner Vergangenheit. Doch gerade an Universitäten dreht sich die Zeit in einem ganz eigenen Rhythmus. Zum Glück half ein Hoffnungsschimmer, eigene Wege zu finden: eine Einführung in das Architekturmuster REST.
Diese eigenen Wege führten mich während meiner Bachelor-Arbeit über Schnittstellen in verteilten Systemen zu GraphQL. Da hatte ich es endlich: eine aufregend elegante Art, Applikationen – und damit Menschen – aus aller Welt zu verbinden.
Um diese Begeisterung zu teilen sowie anderen Anfängern bis fortgeschrittenen Webentwicklern zu zeigen, wie die Kommunikation zwischen Applikationen im Internet auch elegant funktionieren kann, habe ich dieses Buch geschrieben.
Für wen ist dieses Buch?
Dieses Buch ist für alle, die Interesse an Schnittstellen in verteilten Systemen und insbesondere an GraphQL haben. Die Motivation war, ein Grundlagenwerk zu schaffen, durch das man sowohl APIs im Generellen als auch GraphQL im Speziellen verstehen lernt.
Gerade in den ersten beiden Kapiteln wird daher zuerst das generelle Konzept erklärt – unabhängig von der GraphQL-Spezifikation. Vermittelt wird hier sowohl, was Schnittstellen in verteilten Systemen sind, als auch, worauf man bei ihrer Konzeption achten muss. Diese Kapitel richten sich ganz klar eher an Anfänger im Bereich der APIs.
Das Kapitel 1.4 über API-Technologien und -Spezifikationen im Vergleich mag auch für Fortgeschrittene interessant sein. Ansonsten ist für diese Zielgruppe ein Einstieg in Kapitel 3 ratsam.
Ab dort wird die API-Umsetzung anhand von GraphQL – und damit auch die Spezifikation selbst – ausgiebig vorgestellt. Neben den Möglichkeiten mit der Technologie werden auch Designempfehlungen und Implementierungsbeispiele sowohl mit JavaScript als auch mit Java vermittelt. Gerade für die letzten beiden Teile wird ein Grundlagenwissen in der Softwareentwicklung mit JavaScript und Java erwartet.
Was soll dieses Buch vermitteln?
Dieses Buch soll ein Grundlagenwissen schaffen. Ob man in der ersten Vorlesungsstunde des Kurses »Verteilte Systeme« eine modernere Alternative zu dem dort Vorgestellten sucht oder sich als fortgeschrittener Entwickler schlicht für GraphQL interessiert: Nach der Lektüre dieses Buches sollte sowohl verstanden sein, wie APIs mit GraphQL funktionieren, als auch, wie sie umgesetzt werden.
Die Implementierungsbeispiele der letzten beiden Kapitel dienen dabei als Boilerplate-Code, der gut zum Start eines eigenen Projekts mit GraphQL verwendet