Veuillez vous reporter à Problèmes REST et GraphQL.
Ajoutez ce qui suit:
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>
Pour le schéma et les types, veuillez vous référer à GraphQL Schema and Type Definition.
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
}
Créez une classe Java (une classe qui contient des données obtenues à partir d'une source de données) qui correspond au type défini dans la définition de schéma.
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;
}
}
Comme mentionné dans GraphQL Schema and Type Definition, la définition de schéma définit les requêtes et différents types qui peuvent être exploités par le client. Cependant, le schéma n'est qu'une définition et ne manipule pas réellement les données. Le résolveur est celui qui manipule réellement les données.
BookResolver.java
@Component
public class BookResolver implements GraphQLQueryResolver {
public Book bookById(String bookId) {
//Dans la plupart des cas, les données sont en fait lues et renvoyées à partir d'un magasin de données, mais ici une valeur fictive est renvoyée.
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;
}
}
Pour exécuter GraphQL, utilisez des outils tels que GraphiQL et GraphQL Playground, comme présenté dans Outils utiles pour GraphQL. Cette fois, nous utiliserons la version bureau de GraphQL Playground.
query {
bookById(id:1) {
id
name
}
}
Si vous obtenez la réponse suivante, vous réussissez.
{
"data": {
"bookById": {
"id": "1",
"name": "bookName"
}
}
}
Augmentons les éléments d'acquisition. Maintenant, écrivez la requête suivante et appuyez sur le bouton de lecture.
query {
bookById(id:1) {
id
name
author {
id
firstName
lastName
}
}
}
Si vous obtenez la réponse suivante, vous réussissez. Il est possible de modifier dynamiquement les éléments que vous souhaitez acquérir sans changer la source.
{
"data": {
"bookById": {
"id": "1",
"name": "bookName",
"author": {
"id": "0001",
"firstName": "fName",
"lastName": "lName"
}
}
}
}
c'est tout.
Recommended Posts