2016-06-26 7 views
8

フロントエンド用のJavascriptとバックエンド用のC#でWebアプリケーションを構築したいと思い、GraphQLの値を決定したいと考えています。"GraphQL for .NET"と "Relay"でスキーマをリンクする方法は?

  • 私のC#バックエンドでは、GraphQL for .NETという名前のGraphQL実装を使用します。
  • 私のフロントエンドでは、RelayをReactJSでうまく使用したいと思います。

が今私のバックエンドのために、私はこのようになりますone of the examplesのように、サンプル・スキーマ実装:私のフロントエンドでは

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

を、私は今、このスキーマについて何とかリレーを伝える必要があります。少なくとも、これは私がチュートリアルを歩いているときに理解したことです。なぜなら、何らかの理由で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では、私が見てきたbabel-relay-pluginは、変換に使用されていること: これは私がすべてのドロイドをロードしたいかのように例があります。スキーマファイル(JSON)を取得します。 Getting Started Relay Guideに、graphql-jsとgraphql-relay-jsを使ってそのようなスキーマを作成する方法を示します。今

私の質問:

  1. 私は本当に前に、バックエンドでスキーマを作成する必要がありますか?
  2. バックエンドはすでにスキーマを使用して正常に形成されたデータを返すので、教授のポイントは何ですか?
  3. このシナリオでは、Relayを使用する利点は何ですか? GraphQLクエリをパラメータとして使用して、通常のRESTエンドポイント経由でバックエンドにアクセスすると、何が失われますか?

答えて

5
  1. あなただけのバックエンドでスキーマを必要としますが、この文書の底部に例を使用してバックエンドからschema.jsonをダウンロードすることができます:正しくクエリを作成し、の種類を理解するhttps://facebook.github.io/relay/docs/guides-babel-plugin.html
  2. リレーの必要性スキーマ返されたデータ。
  3. RelayはReactコンポーネントをラップし、レンダリングに必要なすべてのデータを取得/提供します。データキャッシングやクエリの統合など、多くの機能を備えているので、リレーでは何も取得する必要はなく、データがコンポーネントにどのように提供されるか心配するだけで、クエリやコンポーネントを書くだけで済みます。
+0

GraphQLクエリからフロントエンドコードを作成する際に、transpilationプロセスでschema.jsonが必要であることがわかりました。 –

関連する問題