如何在" GraphQL for .NET"中链接模式。和"接力"?

时间:2016-06-26 22:22:49

标签: c# reactjs asp.net-core graphql relay

我想构建一个Web应用程序,前端使用Javascript,后端使用C#,我想确定GraphQL的值。

  • 对于我的C#后端,我使用名为GraphQL for .NET
  • 的GraphQL实现
  • 对于我的前端,我想使用Relay,因为它与ReactJS配合得很好。

现在我的后端,我实现了像one of the examples中的示例模式,如下所示:

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
                    }
                }
            }
        `,
    }
});

one of the examples for Relay中,我看到babel-relay-plugin用于转换。它获取一个模式文件(JSON)。 Getting Started Relay指南显示了如何使用graphql-js和graphql-relay-js创建这样的模式。

现在我的问题:

  1. 我真的需要在前端和后端创建架构吗?
  2. 教导Relay我的架构有什么意义,因为后端已经使用架构来返回格式良好的数据?
  3. 在这种情况下使用Relay有什么好处?当我通过常规REST端点以及GraphQL查询作为参数访问后端时会丢失什么?

1 个答案:

答案 0 :(得分:6)

  1. 您只需要在后端使用架构,您可以使用本文档底部的示例从后端下载schema.json:https://facebook.github.io/relay/docs/guides-babel-plugin.html
  2. 中继需要架构以正确构建查询并理解返回数据的类型。
  3. Relay包装您的React组件并获取/提供所有必要的数据以进行渲染。有许多开箱即用的功能,如数据缓存,查询整合,因此使用Relay,您不需要获取任何内容并担心如何向组件提供数据,您只需编写查询和组件。