Spring Boot & GraphQL

OnDemand

Top Contributor
Hi zusammen,

es ist soweit ich muss eine GraphQL API anbinden. Ich hab schon ein paar Tutorials geschaut, aber die meisten handeln davon wie man einen solchen Service bereitstellt, nicht aber wie man den konsumiert.

Hat schon mal jemand eine GQL API in Java konsumiert und kann mir eine paar Starttipps geben? Was mich total verwundert ist, dass es für das Erstellen des Queries wirklich einen üblen String braucht zb

Java:
 String query = """
            mutation ($input: ProductInput!) {
                productCreate(input: $input) {
                    product {
                        id
                        title
                    }
                    userErrors {
                        field
                        message
                    }
                }
            }
        """;

Really? man könnte auch dynamisch bauen, aber da gibts doch garantiert irgendwas einfacheres, objektorientiertes so wie es auch mit json, Jackson und Co automatische Json Strukturen erstellt wenn man REST nutzt.

Freu mich auf jeden Tipp, vielen Dank!
 
ich habe mal das: https://docs.spring.io/spring-graphql/reference/client.html verwendet. Die Abfragen sind nicht kompliziert:
Java:
WebClient client = WebClient.builder()
    .baseUrl("https://countries.com")
    .build();


HttpGraphQlClient graphQlClient = HttpGraphQlClient.builder(client)
    .build();


Country country = graphQlClient.documentName("GetCountry")
    .variable("code", "BR")
    .retrieve("country")
    .toEntity(Country.class)
    .block();


System.out.println(country);
 
Ich kopier’ mal was aus meinem Spring-Buch https://www.amazon.de/Spring-Boot-Framework-Softwareentwicklung-Praxistipps/dp/3367104213 :

Sobald Datentypen in einem strukturierten Format wie JSON-Schema oder XML-Schema vorliegen, eröffnen sich vielfältige Möglichkeiten zur Codegenerierung. Generatoren können dann anhand dieser Schemadefinitionen automatisch passende Klassen, Schnittstellen und Aufzählungen erzeugen. Damit müssen keine GraphQL-Anfragen mehr als Strings formuliert werden, sondern die Abfragen werden typsicher.

Zwei Generatoren in diesem Bereich sind:


Ein Beispiel zur Nutzung des generierten Clients von Netflix DGS Codegen findet sich in der Referenzdokumentation unter https://netflix.github.io/dgs/generating-code-from-schema und sei hier zur Demonstration abgebildet:

Java:
GraphQLQueryRequest graphQLQueryRequest =
        new GraphQLQueryRequest(
            new TicksGraphQLQuery.Builder()
                .first(first)
                .after(after)
                .build(),
            new TicksConnectionProjectionRoot<>()
                .edges()
                    .node()
                        .date()
                        .route()
                            .name()
                            .votes()
                                .starRating()
                                .parent()
                            .grade());

Die generierten Client-API-Klassen bieten zwei entscheidende Vorteile: Typsicherheit, da die Anfragen stets dem Schema entsprechen, und bessere IDE-Unterstützung durch Autovervollständigung und Syntaxhervorhebung. Ein IntelliJ-Plugin (https://github.com/Netflix/dgs-intellij-plugin) erleichtert die Entwicklung mit dem DGS-Framework und die Arbeit mit Schema-Dateien.
 
Ich kopier’ mal was aus meinem Spring-Buch https://www.amazon.de/Spring-Boot-Framework-Softwareentwicklung-Praxistipps/dp/3367104213 :

Sobald Datentypen in einem strukturierten Format wie JSON-Schema oder XML-Schema vorliegen, eröffnen sich vielfältige Möglichkeiten zur Codegenerierung. Generatoren können dann anhand dieser Schemadefinitionen automatisch passende Klassen, Schnittstellen Quickwin Casino überzeugt durch besondere Unterhaltung und Abwechslung. und Aufzählungen erzeugen. Damit müssen keine GraphQL-Anfragen mehr als Strings formuliert werden, sondern die Abfragen werden typsicher.

Zwei Generatoren in diesem Bereich sind:


Ein Beispiel zur Nutzung des generierten Clients von Netflix DGS Codegen findet sich in der Referenzdokumentation unter https://netflix.github.io/dgs/generating-code-from-schema und sei hier zur Demonstration abgebildet:
Spannender Abschnitt – gerade die Typsicherheit ist bei GraphQL-Clients ein echter Vorteil. 👍 Statt Queries mühsam als Strings zusammenzubauen, kann man sich vieles generieren lassen und bekommt Fehler schon
 

Zurück
Oben