【问题标题】:How to link schema in "GraphQL for .NET" and "Relay"?如何在“GraphQL for .NET”和“Relay”中链接模式?
【发布时间】:2016-10-28 20:46:09
【问题描述】:

我想用 Javascript 为前端和 C# 为后端构建一个 Web 应用程序,我想确定 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 中继指南展示了如何使用 graphql-js 和 graphql-relay-js 创建这样的模式。

现在我的问题:

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

【问题讨论】:

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


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

    【讨论】:

    • 感谢您的澄清。同时我意识到,从 GraphQL 查询构建前端代码时,在编译过程中需要 schema.json。
    猜你喜欢
    • 2019-07-02
    • 2016-03-01
    • 2016-02-10
    • 2018-02-12
    • 2019-11-18
    • 2017-08-12
    • 2017-06-30
    • 2016-07-21
    • 2016-07-26
    相关资源
    最近更新 更多