9

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

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

现在对于我的后端,我实现了一个示例模式,如其中一个示例所示,如下所示:

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

在我的前端,我现在需要以某种方式告诉 Relay 这个模式。至少这是我在浏览教程时所理解的,因为出于某种原因,需要对 GraphQL 查询进行转译。这是我想如何加载所有 Droids 的示例:

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 查询作为参数访问后端时,我会失去什么?
4

1 回答 1

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