2017-07-19 18 views
1

私はGraphene-DjangoベースのGraphQL APIを構築しています。 APIを使用するAngularクライアントを構築している私の同僚の一人は、頻繁に使用されるクエリを何らかの方法でサーバー側に保存し、名前で呼び出すことができるかどうかを尋ねました。GraphQLクエリは、ストアドプロシージャと同じように名前を付けて再利用できますか?

私はまだそのような機能に遭遇していないので、可能かどうかは分かりません。

FYI彼はApolloクライアントを使用しているので、このような「名前付き」クエリは厳密にクライアント側ですか? http://dev.apollodata.com/angular2/cache-updates.html

ロバート

答えて

0

優秀な質問:ここで彼は私を参照するページです!あなたが探しているものは「永続的なクエリ」と呼ばれています。 GraphQL仕様は

  • スキーマの型システムは
  • /検証スキーマその向こう

に対してクエリを実行する方法クエリ

  • ための形式言語、それがアップしている概説します具体的な最適化を行うための実装永続的なクエリを実行するにはいくつかの方法があり、プロジェクトごとに異なるクエリがあります。

    の保存クエリ文字列として

    クエリが簡単に文字列として保存することができ、かつ慣習はそれを行うために* .gqlファイルを使用することです。多くのエディタ/ IDEでは、このための構文の強調表示さえあります。後でそれらを消費するには、URLエンコードして、あなたはすべて設定されています!これらの文字列は「既知」なので、選択した場合はサーバー上の要求をホワイトリストに登録できます。

    const myQuery = ` 
        { 
        user { 
         firstName 
         lastName 
        } 
        } 
    ` 
    
    const query = `www.myserver.com/query=${urlEncode(myQuery)}` 
    

    永続クエリ

    より洗練されたアプローチのためには、あなたのプロジェクトから抽出されたクエリを取ることができます(いずれかの文字列から、またはビルド・ツールを使用して)、それらを事前に実行し、結果を入れて、 DBに保存する。これがFacebookの役割です。あなたにこれを手助けする多くのツールがあります。​​レポは探し始めるのに適しています。

    リソース

    Check out this blog for more info on Persisted Queries

  • +0

    私が見えたが、クライアント上の永続クエリをサポートするために、サーバー上で変更する必要があるもののDjangoの具体的な指示を見つけることができませんでした。何かご意見は? –

    +0

    ここでこの質問をしたようです: https://stackoverflow.com/questions/45224911/how-to-configure-graphene-django-to-work-with-persisted-queries – Baer

    関連する問題