2017-08-30 20 views
1

Github GraphQl v4 APIを使用してGithubの詳細にアクセスしたいと思います。私はGrapheneライブラリを見つけましたが、私はPythonの個人アクセストークンで認証する方法がわかりません。
Googleで検索しようとしましたが、例が見つかりませんでした。それはグラフィカルなスキーマを作成することができ、それらを消費するためのものではないPythonライブラリです。私は `要求 'を試みましたが失敗しました。どのように私は認証し、リポジトリのリストを見つけることができますか?Pythonを使用してGithub GraphQL APIを使用するには?

私はこのコードを経由してリポジトリのリストを見つけるために、GithubのGraphQlエクスプローラを使用しています

viewer { 
repositories(first: 30) { 
    totalCount 
    pageInfo { 
    hasNextPage 
    endCursor 
    } 
    edges { 
    node { 
     name 
    } 
    } 
} 

答えて

3

グラフェンはない、それらを消費するためGraphQLのAPIを構築するためです。

あなたはそれを見ましたか?https://github.com/graphql-python/gql

これはPython用のGraphQLクライアントです。

希望します。

+0

お返事ありがとうございます。私は 'gql'を見たが、Githubで認証する方法を調べた。今、私はGitHubの文書(https://developer.github.com/v4/guides/forming-calls/#authenticating-with-graphql)に続いて自分のライブラリ –

+1

@ VaibhavSinghを書いてこの問題を解決しようと考えています。 https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/のようなアクセストークンを生成します。 次に、トークンをhttps://developer.github.com/v4/guides/forming-calls/#communicating-with-graphqlのような 'Authorization'ヘッダーに渡す必要があります。 乾杯、 – Yasss

+2

@VaibhavSingh GraphiクライアントのGraphiQL https://github.com/graphql/graphiqlを使用してGraphQL APIを調べて、Pythonで記述する前にクエリを試すこともできます。がんばろう ! – achedeuzot

1

残念ながら、graphqlには1つのエンドポイントしかありません。クエリをjsonオブジェクトとしてPOSTを実行するだけで済みます。ヘッダーの一部としてgithubから取得するapi_tokenを提供する必要があります。

import requests 

url = 'https://api.github.com/graphql' 
json = { 'query' : '{ viewer { repositories(first: 30) { totalCount pageInfo { hasNextPage endCursor } edges { node { name } } } } }' } 
api_token = "your api token here..." 
headers = {'Authorization': 'token %s' % api_token} 

r = requests.post(url=url, json=json, headers=headers) 
print (r.text) 
+0

お返事ありがとうございます!だから、もし私がデフォルトの引数でいくつかの関数を追加して私のjsonをカスタマイズしたいのであれば、ちょっと疑いがあります。そこで、デフォルト引数に 'first:10'を追加します。編集したい場合は' first:30'を渡すことで上書きできます。私はそれが愚かな質問だと知っていますが、あなたは私を助けることができます –

+0

@ VaibhavSingh私はあなたの言葉が正しいことを確認していません。もう一度説明してください。 – sreenivas

+0

今、jsonは私たちによって修正されています。私たちはGraphQLから期待される結果を得るでしょうが、私が望むならば、関数に渡されたjson buyのカスタマイズが可能で、ユーザーに応じてクエリを変更することができます。今はプログラムでハードコードされています –

関連する問題