Weitere Informationen finden Sie unter REST-Probleme und GraphQL.
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>
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 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;
}
}
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;
}
}
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.
Recommended Posts