2017-10-11 19 views
1

私はGitHubからv4(GraphQL)APIを使っていくつかのデータを読み出そうとしています。私は、一部のクエリをGraphQLフラグメントに置き換えるまで、正常に動作しているJavaクライアントを作成しました。GraphQLフラグメントJSONフォーマット

私は最初にクエリをテストするためにGraphiQLを使用していましたが、フラグメントを追加するのは非常に簡単でした。しかし、JSONに変換する際に、私は正しいフォーマットを理解していません。私が試した:

{ "query": "{ ... body_of_query ... } fragment fragname on Blob { byteSize text }" }

{ "query": "{ ... body_of_query ... }, fragment fragname on Blob { byteSize text }" }

{ "query": "{ ... body_of_query ... }", "fragment": "{fragname on Blob { byteSize text } }" }

EDIT:@Scriptonomyのための追加:

{ 
query { 
    search(first:3, type: REPOSITORY, query: \"language:HCL\") { 
    edges { 
     node { 
     ... on Repository { 
      name 
      descriptionHTML 
      object(expression: \"master:\") { 
      ... on Tree { 
       ...recurseTree 
      } 
      } 
     } 
     } 
     cursor 
    } 
    pageInfo { 
     endCursor 
     hasNextPage 
    } 
    } 
} 

fragment recurseTree on Tree { 
    entries { 
    name 
    type 
    } 
} 

を私は確かよ、それは楽しさと、すべてのだろうこれにランダムなバリエーションを投げつけ続けると、私の朝はハチがあります多くのGraphQLのドキュメントやブログを断片的に検索していて、正解を実際に推測したにもかかわらず、不一致のJSONを使用しています(フォーマットを知っているまでは、おそらく賢明な選択ではないでしょう)。

私は、誰かが正しいフォーマットを知っていて、GraphQL-docの過度の露出から逃げる前に正しいコースで私を設定することを期待しています。

+0

編集:@Scriptonomyの追加 – REW

答えて

0

GraphQLクエリをJSONに変換する必要はありません。

"{ query { ... body_of_query ... } fragment fragname on Blob { byteSize text } }" 
+0

私はこのバージョンにショットを付けましたが、400個の応答コードがあります。あなたや他の人がそれを見て、「まあ、あなたは間違っていました」と言って、このバージョンの質問の編集に完全なPOSTデータ(引用符で囲まれたもの)を含めました。 – REW

0

フラグメントは、クエリ自体と同じJSON本体のプロパティで送信されます。フラグメントhereの使用例を見ることができます。

有効なGraphQLリクエストは、通常、URLクエリパラメータとしてクエリをエンコードするGETリクエストか、JSON本体のPOSTリクエストです。 JSON本体には、1つの必須キー、queryと1つのオプションフィールド、variablesがあります。

{ 
    "query": "{\n query {\n search(first:3, type: REPOSITORY, query: \"language:HCL\") {\n  edges {\n  node {\n  ... on Repository {\n   name\n   descriptionHTML\n   object(expression: \"master:\") {\n   ... on Tree {\n    ...recurseTree\n   }\n   }\n  }\n  }\n  cursor\n }\n pageInfo {\n  endCursor\n  hasNextPage\n }\n }\n}\n\nfragment recurseTree on Tree {\n entries {\n name\n type\n }\n}" 
} 

あなたの質問で逐語クエリ文字列のJSON.stringifyバージョンであること:あなたのケースでは、JSONは、このように見える必要があります。

GitHub GraphQL APIに接続されたGraphiQLインスタンスからクエリを実行し、ネットワーク要求を調べることをお勧めします。 GraphQLリクエストをcuRLとしてコピーして、JSON本体の外観を確認することができます。

まだ400を取得している場合は、リクエストが不正であったため、おそらく最初にGraphQLパーサーにヒットしたとは限りません。

関連する問題