フロント エンドに Javascript、バック エンドに C# を使用して Web アプリを構築し、GraphQL の価値を判断したいと考えています。
- 私の C# バックエンドでは、GraphQL for .NETという名前の GraphQL 実装を使用します。
- 私のフロント エンドには、ReactJS とうまく連携するRelayを使用したいと考えています。
次に、バックエンド用に、次のような例の 1 つのようなサンプル スキーマを実装しました。
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の例の 1 つで、babel-relay-pluginが変換に使用されていることがわかりました。スキーマ ファイル (JSON) を取得します。Relayの入門ガイドには、graphql-js と graphql-relay-js を使用してそのようなスキーマを作成する方法が示されています。
今私の質問:
- フロントエンドとバックエンドでスキーマを作成する必要は本当にありますか?
- バックエンドはすでにスキーマを使用して適切な形式のデータを返しているため、Relay に自分のスキーマを教える意味は何ですか?
- このシナリオで Relay を使用する利点は何ですか? パラメータとして GraphQL クエリを使用し、通常の REST エンドポイントを介してバックエンドにアクセスすると、何が失われますか?