[JAVA] Implementieren Sie GraphQL mit Spring Boot

Was ist GraphQL?

Weitere Informationen finden Sie unter REST-Probleme und GraphQL.

Umgebung

Fügen Sie abhängige Bibliotheken hinzu

Fügen Sie Folgendes hinzu:

pom.xml


    <!-- https://mvnrepository.com/artifact/com.graphql-java/graphql-java -->
    <dependency>
      <groupId>com.graphql-java</groupId>
      <artifactId>graphql-java</artifactId>
      <version>11.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.graphql-java/graphql-spring-boot-starter -->
    <dependency>
      <groupId>com.graphql-java</groupId>
      <artifactId>graphql-spring-boot-starter</artifactId>
      <version>5.0.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/com.graphql-java/graphql-java-tools -->
    <dependency>
      <groupId>com.graphql-java</groupId>
      <artifactId>graphql-java-tools</artifactId>
      <version>5.2.4</version>
    </dependency>

Schemadefinition

Informationen zu Schema und Typen finden Sie unter GraphQL-Schema und Typdefinition.

schema.graphqls


type Book {
    id: ID
    name: String
    pageCount: Int
    author: Author
}

type Author {
    id: ID
    firstName: String
    lastName: String
}

type Query {
    bookById(id: ID): Book
}

Erstellen einer Typklasse

Erstellen Sie eine Java-Klasse (eine Klasse, die Daten enthält, die aus einer Datenquelle stammen), die dem in der Schemadefinition definierten Typ entspricht.

Book.java



public class Book {

    private String id;
    private String name;
    private int pageCount;
    private Author author;

    public void setId(String id) {
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPageCount(int pageCount) {
        this.pageCount = pageCount;
    }

    public void setAuthor(Author author) {
        this.author = author;
    }
}

Author.java


public class Author {

    private String id;
    private String firstName;
    private String lastName;

    public void setId(String id) {
        this.id = id;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

Resolver erstellen

Wie in GraphQL-Schema- und Typdefinition erwähnt, definiert die Schemadefinition Abfragen und verschiedene Typen, die vom Client betrieben werden können. Das Schema ist jedoch nur eine Definition und manipuliert die Daten nicht tatsächlich. Der Resolver ist derjenige, der die Daten tatsächlich manipuliert.

BookResolver.java


@Component
public class BookResolver implements GraphQLQueryResolver {
	
	public Book bookById(String bookId) {
		//In den meisten Fällen werden Daten tatsächlich gelesen und aus einem Datenspeicher zurückgegeben, aber hier wird ein Dummy-Wert zurückgegeben.
		Book book = new Book();
		book.setId(bookId);
		book.setName("bookName");
		book.setPageCount(900);
		Author author = new Author();
		author.setId("0001");
		author.setFirstName("fName");
		author.setLastName("lName");
		book.setAuthor(author);
		return book;
	}
}


Lauf

Verwenden Sie zum Ausführen von GraphQL Tools wie GraphiQL und GraphQL Playground, wie in Nützliche Tools für GraphQL beschrieben. Dieses Mal werden wir die Desktop-Version von GraphQL Playground verwenden.

query {
  bookById(id:1) {
    id
    name
  }
}

Wenn Sie die folgende Antwort erhalten, sind Sie erfolgreich.

{
  "data": {
    "bookById": {
      "id": "1",
      "name": "bookName"
    }
  }
}

Erhöhen wir die Akquisitionsposten. Schreiben Sie nun die folgende Abfrage und drücken Sie die Wiedergabetaste.

query {
  bookById(id:1) {
    id
    name
    author {
      id
      firstName
      lastName
    }
  }
}

Wenn Sie die folgende Antwort erhalten, sind Sie erfolgreich. Es ist möglich, die Elemente, die Sie erwerben möchten, dynamisch zu ändern, ohne die Quelle zu ändern.

{
  "data": {
    "bookById": {
      "id": "1",
      "name": "bookName",
      "author": {
        "id": "0001",
        "firstName": "fName",
        "lastName": "lName"
      }
    }
  }
}

das ist alles.

Referenz

Recommended Posts

Implementieren Sie GraphQL mit Spring Boot
Ich habe GraphQL mit Spring Boot ausprobiert
Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf
Mit Spring Boot herunterladen
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
Generieren Sie mit Spring Boot einen Barcode
Hallo Welt mit Spring Boot
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Implementieren Sie eine einfache Rest-API mit Spring Security mit Spring Boot 2.0
Verwenden Sie die Standardauthentifizierung mit Spring Boot
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Erstellen Sie eine App mit Spring Boot 2
Hot Deploy mit Spring Boot-Entwicklung
Datenbankverknüpfung mit doma2 (Spring Boot)
Spring Boot Programmierung mit VS Code
Bis "Hallo Welt" mit Spring Boot
Erstellen Sie eine Anfrage-App mit Spring Boot
Erhalten Sie Validierungsergebnisse mit Spring Boot
Implementieren Sie den Dateidownload mit Spring MVC
(Intellij) Hallo Welt mit Spring Boot
Erstellen Sie eine App mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot
Google Cloud Platform mit Spring Boot 2.0.0
Implementieren Sie die Spring Boot-Anwendung in Gradle
[Java] LINE-Integration mit Spring Boot
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Ich habe Flyway mit Spring Boot ausprobiert
Die Nachrichtenkooperation begann mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot und JPA (Application Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Infrastructure Layer).
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).
Implementieren Sie eine einfache Rest-API mit Spring Security & JWT mit Spring Boot 2.0
Implementieren Sie einen einfachen Web-REST-API-Server mit Spring Boot + MySQL
Verarbeitung beim Starten einer Anwendung mit Spring Boot
Hallo Welt mit Eclipse + Spring Boot + Maven
Senden Sie regelmäßige Benachrichtigungen mit LineNotify + Spring Boot
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch
HTTPS mit Spring Boot und Let's Encrypt
Fordern Sie Spring Boot heraus
Versuchen Sie es mit Spring Boot mit VS-Code
Starten Sie die Entwicklung von Webanwendungen mit Spring Boot
Starten Sie die Nginx + Spring Boot-Anwendung mit Docker-Compose
Ich habe Lazy Initialization mit Spring Boot 2.2.0 ausprobiert
Spring Boot Form
Asynchrone Verarbeitung mit Spring Boot unter Verwendung von @Async