2016-04-01 11 views
2

golangGraphQL endpointsを作成しようとしています。GraphQLとリレーのコンセプト

graphQlの実装ではLearn Golang + GraphQL + Relay #1golangにしており、私はGraphQLという単純なエンドポイントを作成しました。

いくつかの私はgraphQlを使用してpaginationエンドポイントを構築する方法として、私にはまだ不明である概念、

//How to build endpoints for fetching data from this query 
friends.first(1){ 
    cursor, 
    node { 
     name 
    } 
} 

//or this query 
friends.last(1){ 
    cursor, 
    node { 
     name 
    } 
} 

Introducing Relay and GraphQL

としてのような もの方法がありますが、私はAngular背景から、このRelayコンセプトはまだ私にとって非常に混乱しています。リレーがクライアントとサーバー間の通信を容易にする仕組み。

+2

PaginationsはGraphQL仕様の一部ではないが、それは、[接続](https://facebook.github.io/relay/docs/の中継ライブラリの一部でありますgraphql-connections.html)。 GraphQLオブジェクトの入力引数を定義することで、Relayなしでページネーションを実装できます。 Btw、あなたが持っている例のGraphQLクエリはちょっと怪しいようです。 'friends(first:1){cursor、node {name}}'でなければなりません。 'friends'オブジェクトはGraphQLInt型の' first'入力引数を受け入れます。私は 'graphql-go'のページネーションの例を作成する時間を見つけようとします。多くの人にとって非常に便利なようです。 –

+2

私のコメントはhttps://github.com/graphql-go/graphql/issues/120で詳述しました。 –

答えて

4
これらの概念をより明確にする

ノードまたは何かを使用して、いくつかの例を提供してください

ページネーションは、簡単な質問ではなく、明示的にGraphQLによって解決1になることはありません。 GraphQLはデータフェッチフレームワークを提供しています。フレームワークがどのようにして(ページ付けのように)開発者に任されているのですか?

Relayチームは、Graphqlのカーソル接続specificationでページ付けを標準化しようとしました。カーソル接続の仕様はRelay固有のものではなく、Angularで使用することができます。仕様の主な目的は、GraphQLサーバから大規模なコレクションを扱うための標準化された方法を提供することです。この仕様に関する重要な点は、すべてのオブジェクトに関連するカーソルがあることです。この関連カーソルにより、クライアントはコレクション内の任意のポイントからページネーションを再開できます。

リレー仕様の実装に興味がある場合は、Sashko StubailoのUnderstanding pagination: REST, GraphQL, and Relayを読んで、リレー接続仕様の背景とその実装方法について説明してください。

実際の接続仕様を見るには、GraphQLでRelay仕様を実装しているSWAPI GraphQL APIの例を見てください。ドキュメントウィンドウを開き、PeopleConnectionを参照することをお勧めします。それらがedgesフィールドとpeopleフィールドの両方を実装する方法に注意してください。

カーソルのページ設定が複雑すぎて使用/実装できない場合は、GraphQL APIの従来の制限/オフセットページングをいつでも公開できます。インターフェースは、おそらく次のようになります。

{ 
    friends(limit: 5, offset: 20) { 
    name 
    } 
} 

は最後に、あなたが提供するクエリがGraphQLの非常に初期のテクニカルプレビューからのものであり、実際の仕様(source)に準拠していません。 (ハーフィズで述べたように)、より適切なクエリは次のようになります。

{ 
    friends(first: 1) { 
    cursor 
    node { 
     name 
    } 
    } 
} 

私はまた、あなたがリレーなしGraphQLについての詳細を話した鑑賞をお勧めしますリアクトヨーロッパ2015年から2件の素晴らしい講演があります。

関連する問題