Как связать схему в GraphQL для .NET и Relay?

Я хочу создать веб-приложение с Javascript для внешнего интерфейса и C # для серверной части, и я хочу определить значение GraphQL.

  • Для своей серверной части C # я использую реализацию GraphQL с именем GraphQL для .NET.
  • В качестве внешнего интерфейса я хотел бы использовать Relay, поскольку он хорошо работает с ReactJS.

Теперь для своей серверной части я реализовал образец схемы, такой как в один из примеров, который выглядит так:

public class StarWarsSchema : Schema
{
    public StarWarsSchema()
    {
        Query = new StarWarsQuery();
    }
}

В моем интерфейсе мне теперь нужно как-то сообщить Relay об этой схеме. По крайней мере, это то, что я понял при просмотре руководств, потому что по какой-то причине запросы GraphQL необходимо переносить. Это пример того, как я хотел бы загрузить всех дроидов:

class Content extends React.Component<ContentProps, { }> {
    ...
}

export default Relay.createContainer(Content, {
    fragments: {
        viewer: () => Relay.QL`
            fragment on User {
                query HeroNameQuery {
                    droids {
                        id
                        name
                    }
                }
            }
        `,
    }
});

В одном из примеров для Relay я видел, что для преобразования используется babel-relay-plugin. Он получает файл схемы (JSON). В руководстве по Начало работы Relay показано, как создать такую ​​схему. с помощью graphql-js и graphql-relay-js.

Теперь мои вопросы:

  1. Мне действительно нужно создавать схемы спереди и сзади?
  2. В чем смысл обучения Relay моей схеме, поскольку серверная часть уже использует схему для возврата правильно сформированных данных?
  3. Какая вообще польза от использования Relay в этом сценарии? Что я потеряю, если просто получу доступ к бэкэнду через обычную конечную точку REST вместе с запросом GraphQL в качестве параметра?

person Michael Hilus    schedule 26.06.2016    source источник


Ответы (1)


  1. Вам нужна схема только на бэкэнде, и вы можете загрузить schema.json со своего бэкэнда, используя пример в нижней части этого документа: https://facebook.github.io/relay/docs/guides-babel-plugin.html
  2. Схема нужна ретранслятору для правильного построения запросов и понимания типов возвращаемых данных.
  3. Relay обертывает ваши компоненты React и извлекает / предоставляет все необходимые данные для рендеринга. Имеет множество готовых функций, таких как кэширование данных, консолидация запросов, поэтому с Relay вам не нужно ничего извлекать и беспокоиться о том, как данные предоставляются вашему компоненту, вам просто нужно писать запросы и компоненты.
person dangh    schedule 17.09.2016
comment
Спасибо за разъяснения. Тем временем я понял, что schema.json нужен в процессе транспиляции при построении кода внешнего интерфейса из запросов GraphQL. - person Michael Hilus; 18.09.2016