2017-08-30 63 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進行身份驗證。現在,我想通過編寫我自己的庫 –

+1

@VaibhavSingh來解決這個問題,遵循GitHub文檔(https://developer.github.com/v4/guides/forming-calls/#authenticating-with-graphql),您需要生成一個像https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/的訪問令牌。 然後,您必須將您的令牌傳遞到'Authorization'頭部,就像https://developer.github.com/v4/guides/forming-calls/#communicating-with-graphql。 Cheers, – Yasss

+2

@VaibhavSingh您還可以使用圖形客戶端GraphiQL https://github.com/graphql/graphiql來探索GraphQL API並在將它們寫入python之前嘗試查詢。祝你好運 ! – achedeuzot

1

與其餘部分不同,graphql只有一個端點。您只需要將您的查詢作爲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傳遞函數中的函數,並且可以根據用戶更改查詢。現在它在程序中被硬編碼 –