Как перевести интерфейсы GraphQL в мир Java с помощью библиотеки Graphql-java-kickstart с помощью Spring-BootJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как перевести интерфейсы GraphQL в мир Java с помощью библиотеки Graphql-java-kickstart с помощью Spring-Boot

Сообщение Anonymous »

Я новичок в GraphQL и пытаюсь реализовать концепцию интерфейса GraphQL в правильный Java-код, который работает с библиотекой GraphQL-Java-Kickstart в Spring Boot. Я потратил довольно много времени на поиск ответов в Интернете, но не смог найти подходящего рабочего примера. Вот мой простой случай, который я пытаюсь выяснить:
Схема GraphQL

Код: Выделить всё

  interface Notification {
id: ID!
date: String
isOpened: Boolean!
title: String
description: String
}

type InvitationNotification implements  Notification {
id: ID!
date: String
isOpened: Boolean!
title: String
description: String
sendBy: String
}

type Query {
notification(id: ID!): Notification!
}
Мой (плохой) перевод

Код: Выделить всё

// Query resolver
@Component
public class Query implements GraphQLQueryResolver {

Notification notification(UUID id) {
return new InvitationNotification(id,
OffsetDateTime.now(),
false,
"Connection request from notary xyz",
"Blabla",
"Notary xyz"
);
}
}

// POJO abstract class, omitted getters
public abstract class Notification {

private final UUID id;

private final OffsetDateTime date;

private  final boolean isOpened;

private final String title;

private final String description;

public Notification(UUID id, OffsetDateTime date, boolean isOpened, String title, String description) {
this.id = id;
this.date = date;
this.isOpened = isOpened;
this.title = title;
this.description = description;
}

// POJO that extends
public class InvitationNotification extends Notification {

private final String sendBy;

public InvitationNotification(UUID id, OffsetDateTime date, boolean isOpened, String title, String description, String sendBy) {
super(id, date, isOpened, title, description);
this.sendBy = sendBy;
}

public String getSendBy() {
return sendBy;
}
}

// Spring config bean
@Configuration
public class GraphQLConfig {

@Bean
public SchemaParserDictionary schemaParserDictionary() {
return new SchemaParserDictionary().add(InvitationNotification.class);
}

}

С помощью приведенного выше кода я могу успешно выполнить следующий запрос, который запрашивает только общие атрибуты

Код: Выделить всё

# Query
query aQuery {
notification(id: "c782bbb2-7929-4694-9236-8108b49d5ba7") {
id,
title,
description,
isOpened,
}
}
# Result
{
"data": {
"notification": {
"id": "c782bbb2-7929-4694-9236-8108b49d5ba7",
"title": "Connection request from notary xyz",
"description": "Blabla",
"isOpened": false
}
}
}
При использовании приведенного выше кода я получаю сообщение об ошибке при запросе дополнительного атрибута.

Код: Выделить всё

# Query
query aQuery {
notification(id: "c782bbb2-7929-4694-9236-8108b49d5ba7") {
id,
title,
description,
isOpened,
sendBy
}
}
# Result
{
"errors": [
{
"message": "Validation error of type FieldUndefined: Field 'sendBy' in type 'Notification' is undefined @ 'notification/sendBy'",
"locations": [
{
"line": 38,
"column": 5
}
],
"extensions": {
"classification": "ValidationError"
}
}
],
"data": null
}
Думаю, мне нужно где-то подсказать библиотеке, какие классы реализуют интерфейс, чтобы она могла выполнять действия типа Instance Of, но понятия не имею, где именно.
Было бы очень полезно, если бы пример был добавлен в https://github.com/graphql-java-kickstart/samples.
Обратите внимание, что я также обратился к вам. в разделе обсуждения graphql-java-kickstart/samples

Подробнее здесь: https://stackoverflow.com/questions/719 ... a-kickstar
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»