GraphQL API mit Java: Schritt-für-Schritt-Tutorial in der Praxis

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 die GraphQL API mit Java

\n\n

GraphQL ist eine Abfragesprache für APIs, die es Clients ermöglicht, nur die Daten anzufordern, die sie tatsächlich benötigen. Im Gegensatz zu REST, wo die Antwortstruktur festgelegt ist, ermöglicht GraphQL eine flexible Gestaltung der Antworten, was die Menge der übertragenen Daten erheblich reduziert und die Entwicklung beschleunigt.

\n\n

In diesem Tutorial werden wir praktisch erarbeiten, wie man eine GraphQL API mit Java unter Verwendung der Bibliothek graphql-java und des Frameworks Spring Boot erstellt. Sie erfahren, wie Sie das Schema einrichten, Resolver schreiben und Abfragen ausführen.

\n\n

Der Artikel ist nützlich für Java-Entwickler, die einen modernen Ansatz zur API-Erstellung erlernen und die Interaktion zwischen Client und Server verbessern möchten.

\n\n

1. Projekteinrichtung und Abhängigkeiten

\n\n

Zunächst erstellen wir ein neues Spring Boot-Projekt. Am einfachsten geht das mit Spring Initializr. Fügen wir die folgenden Abhängigkeiten hinzu:

\n\n
    \n
  • Spring Web — zum Starten des Webservers
  • \n
  • Spring Boot DevTools — zur Beschleunigung der Entwicklung
  • \n
  • Lombok — zur Reduzierung von Boilerplate-Code
  • \n
\n\n

Fügen Sie nach der Projekterstellung die Hauptbibliothek GraphQL in die pom.xml ein:

\n\n
<dependency>\n    <groupId>com.graphql-java</groupId>\n    <artifactId>graphql-java-spring-boot-starter-webmvc</artifactId>\n    <version>2021-06-30T00-00-00-1e4b5e5</version>\n</dependency>
\n\n

Außerdem wird eine Bibliothek für die Arbeit mit dem GraphiQL-Tool (Web-Interface zum Testen von Abfragen) benötigt:

\n\n
<dependency>\n    <groupId>com.graphql-java</groupId>\n    <artifactId>graphiql-spring-boot-starter</artifactId>\n    <version>5.0.2</version>\n</dependency>
\n\n

Aktualisieren Sie nach dem Hinzufügen der Abhängigkeiten das Projekt und starten Sie es. Standardmäßig ist GraphiQL unter der Adresse http://localhost:8080/graphiql verfügbar.

\n\n

2. Erstellung des Datenmodells und des GraphQL-Schemas

\n\n

Zur Demonstration erstellen wir ein einfaches Modell Book (Buch). Definieren wir eine Klasse mit den Feldern id, title, author und pages.

\n\n
import lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class Book {\n    private String id;\n    private String title;\n    private String author;\n    private int pages;\n}
\n\n

Jetzt muss das GraphQL-Schema definiert werden. Erstellen Sie die Datei schema.graphqls im Ordner src/main/resources:

\n\n
type Query {\n    allBooks: [Book]\n    bookById(id: String): Book\n}\n\ntype Book {\n    id: String\n    title: String\n    author: String\n    pages: Int\n}
\n\n

Das Schema beschreibt zwei Abfragen: Abrufen aller Bücher und Abrufen eines Buches anhand der ID. Der Typ Book enthält vier Felder.

\n\n

Zur Verarbeitung der Abfragen erstellen wir einen Service, der die Daten im Speicher speichert (der Einfachheit halber):

\n\n
import org.springframework.stereotype.Service;\nimport javax.annotation.PostConstruct;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Optional;\n\n@Service\npublic class BookService {\n    private List<Book> books = new ArrayList<>();\n\n    @PostConstruct\n    public void init() {\n        books.add(new Book("1", "Krieg und Frieden", "Leo Tolstoi", 1225));\n        books.add(new Book("2", "Verbrechen und Strafe", "Fjodor Dostojewski", 671));\n        books.add(new Book("3", "Der Meister und Margarita", "Michail Bulgakow", 480));\n    }\n\n    public List<Book> getAllBooks() {\n        return books;\n    }\n\n    public Book getBookById(String id) {\n        Optional<Boo                

Blogs

Buchempfehlungen