我想用 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 创建这样的模式。
现在我的问题:
- 我真的需要在前端和后端创建模式吗?
- 教 Relay 我的模式有什么意义,因为后端已经使用模式来返回格式良好的数据?
- 在这种情况下使用 Relay 有什么好处?当我只通过常规 REST 端点以及 GraphQL 查询作为参数访问后端时,我会失去什么?