GraphQL Java: Ein leistungsstarkes Werkzeug zur Erstellung moderner APIs in Java

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

GraphQL Java: Vollständige Anleitung zur Bibliothek für die Erstellung moderner APIs



GraphQL Java ist eine leistungsstarke und flexible Bibliothek, die es ermöglicht, die GraphQL-Spezifikation in der Sprache Java zu implementieren. Sie bietet Entwicklern alle notwendigen Werkzeuge zur Erstellung effizienter, typisierter und leicht erweiterbarer APIs. Im Gegensatz zu REST ermöglicht GraphQL Clients, nur die Daten anzufragen, die sie tatsächlich benötigen, was die übertragene Datenmenge erheblich reduziert und die Anwendungsleistung beschleunigt.



Hauptfunktionen von GraphQL Java



  • Vollständige Unterstützung der GraphQL-Spezifikation – Die Bibliothek implementiert alle wesentlichen Funktionen: Abfragen (queries), Mutationen (mutations), Abonnements (subscriptions) und Schnittstellen.
  • Typsicherheit – Die strenge Typisierung des Schemas ermöglicht es, Fehler bereits zur Kompilierzeit zu vermeiden und macht die API vorhersagbarer.
  • Flexible Konfiguration – Möglichkeit zur Anpassung des Schemas, Hinzufügen von Direktiven und Erweiterungen.
  • Integration mit gängigen Frameworks – Hervorragende Kompatibilität mit Spring Boot, Micronaut, Quarkus und anderen.
  • Leistung – Effiziente Abfrageverarbeitung mit DataLoader zur Lösung des N+1-Problems.


Installation und Konfiguration



Um mit GraphQL Java zu beginnen, fügen Sie die Abhängigkeit zu Ihrer pom.xml (Maven) hinzu:



<dependency>    <groupId>com.graphql-java</groupId>    <artifactId>graphql-java</artifactId>    <version>21.3</version></dependency>


Wenn Sie Gradle verwenden, fügen Sie in build.gradle hinzu:



implementation 'com.graphql-java:graphql-java:21.3'


Erstellung eines GraphQL-Schemas



Das GraphQL-Schema definiert die Datentypen und Operationen, die Clients zur Verfügung stehen. Betrachten wir ein Beispiel eines einfachen Schemas für ein Benutzerverwaltungssystem:



type User {    id: ID!    name: String!    email: String!    age: Int    posts: [Post]}

type Post { id: ID! title: String! content: String! author: User!}

type Query { user(id: ID!): User users: [User] post(id: ID!): Post}

type Mutation { createUser(name: String!, email: String!, age: Int): User updateUser(id: ID!, name: String, email: String): User}


Implementierung in Java



Für die Arbeit mit GraphQL Java müssen Resolver-Klassen erstellt werden, die die Abfragen verarbeiten. Beispiel eines Resolvers für Benutzer:



import graphql.kickstart.tools.GraphQLQueryResolver;import org.springframework.stereotype.Component;import java.util.List;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;

@Componentpublic class UserQueryResolver implements GraphQLQueryResolver { private final Map<String, User> users = new ConcurrentHashMap<>(); public User user(String id) { return users.get(id); } public List<User> users() { return List.copyOf(users.values()); }}


Resolver für Mutationen:



import graphql.kickstart.tools.GraphQLMutationResolver;import org.springframework.stereotype.Component;import java.util.UUID;

@Componentpublic class UserMutationResolver implements GraphQLMutationResolver { private final Map<String, User> users = new ConcurrentHashMap<>(); public User createUser(String name, String email, Integer age) { String id = UUID.randomUUID().toString(); User user = new User(id, name, email, age); users.put(id, user); return user; }}


Datenmodell



Definieren wir die Klasse User zur Darstellung der Daten:



public class User {    private String id;    private Stri                    

Empfehlungen