web-dev-qa-db-ja.com

「操作名」とは何ですか?

私はGraphQLについて学んでおり、queryまたはmutation(ルートクエリタイプに応じて)の後に続くクエリのoperation name部分に非常に興味があります。操作名を使用したコード例をいくつか見つけましたが、それらがどこから来たのか混乱していますか?それらについてのコードには参照がないようであり、それらは完全に恣意的であるように見えます。

query Welcome {
  echo (email: "[email protected]")
}

そして

query HeroNameQuery {
  hero {
    name
  }
}

特定のスキーマに後続のクエリとタイプ(例:userarticleorderなど)を含めることができない理由がわかりません。名前空間システムを理解しておらず、操作名には何らかの利点があります。

https://github.com/mugli/learning-graphql/blame/master/7.%20Deep%20Dive%20into%20GraphQL%20Type%20System.md#L436

http://graphql.org/docs/queries/

10
ThomasReggi

GraphiQLでは、操作名で指定されたクエリのリストから選択できます。これを理解するのに役立つスクリーンショットをいくつか示します。

enter image description here

2つのミューテーション/クエリが並んでいて、それらに操作名がない場合、それらを実行することはできません。

操作名がある場合は、再生/実行ボタンをクリックすると一覧表示されます。

enter image description here

これは、私がこれまでに見た操作名を持つ最大のケースです。

ただし、クエリ/ミューテーションを実行したばかりの場合は、それが実行されるため、必要ありません。

enter image description here

9
ThomasReggi

クエリ/ミューテーション名はオプションです。バックエンドでサポートされている場合は、保存されたクエリのバックエンドで使用できます。ただし、通常はロギングに使用されます。クエリ/ミューテーションごとに一意の名前を使用できます。次に、問題が発生したときに、クエリ名のログをgrepして、その特定のクエリで何が起こっているかを確認できます。

8
James

それは素晴らしい質問です。オペレーション名は、あなたがそれを何と呼びたいかについてはほとんどあなた次第です。ただし、次のようにクエリ/ミューテーションパラメータを渡す場合は必要です。

// GraphQL Query

query Welcome ($data: String!) {
  echo (email: $data) {
    name
  }
}

// GraphQL Variables

{
  "data": "[email protected]"
}

GraphQLの哲学はすべてが強く型付けされており、クライアントがサブフィールドに必要なデータを正確に指示することであるため、戻りフィールドについては、特定の型付き選択のサブフィールドを書き出す必要があります。

お役に立てれば!

3
vince