Git

Interfészelés a GitHub API-val a Python 3 segítségével

Interfészelés a GitHub API-val a Python 3 segítségével
A GitHub mint webalkalmazás hatalmas és összetett entitás. Gondoljon az összes lerakatra, felhasználókra, ágakra, vállalásokra, megjegyzésekre, SSH kulcsokra és harmadik fél alkalmazásaira. Sőt, többféle módon lehet kommunikálni vele. Vannak asztali alkalmazások a GitHub számára, a Visual Studio Code és az Atom Editor kiterjesztései, a git cli, az Android és az iOS alkalmazások, hogy csak néhányat említsünk.

A GitHub emberei és harmadik féltől származó fejlesztők sem képesek kezelni ezt a bonyolultságot közös felület nélkül. Ezt a közös felületet hívjuk GitHub API-nak. Minden GitHub segédprogram, például egy cli, webes felhasználói felület stb. Ezt az egyetlen közös felületet használja az erőforrások kezelésére (az erőforrások olyan entitások, mint a tárak, az ssh kulcsok stb.).

Ebben az oktatóanyagban megtudhatunk néhány alapot arról, hogyan kapcsolódhat egy API-hoz a GitHub API v3 és Python3 használatával. A GitHub API legújabb v4-es verziója megköveteli, hogy megtanulja a GraphQL-t, amely meredekebb tanulási görbét eredményez. Tehát maradok a csak a harmadik verziónál, amely még mindig aktív és elég népszerű.

Hogyan beszéljünk egy webes API-val

A webes API-k lehetővé teszik egy webalkalmazás, például a GitHub által kínált összes szolgáltatás programozott használatát az Ön által választott nyelven. Például itt a Python-t fogjuk használni. Technikailag mindent megtehet a GitHubon az API használatával, de mi csak a nyilvánosan hozzáférhető információk olvasására szorítkozunk.

A Python-program ugyanúgy fog beszélni az API-val, mint a böngésző egy webhellyel. Vagyis leginkább HTTPS-kérelmeken keresztül. Ezek a kérések különböző „részeket” fognak tartalmazni, kezdve a [GET, POST, PUT, DELETE] kérés módszerétől, magától az URL-től, egy lekérdezési karaktersorozattól, egy HTTP fejléctől és egy törzstől vagy egy hasznos terhetől. Ezek többsége nem kötelező. Meg kell adnunk azonban egy kérési módszert és azt az URL-t, amelyre a kérést benyújtjuk.

Mik ezek és hogyan képviseltetik magukat egy HTTPS-kérelemben, lassan látni fogjuk, amikor elkezdünk Python-szkripteket írni, hogy kapcsolatba lépjünk a GitHub-szal.

Egy példa

SSH-kulcsok hozzáadása egy újonnan létrehozott kiszolgálóhoz mindig esetlen folyamat. Írjunk egy Python szkriptet, amely lekéri a nyilvános SSH kulcsokat a GitHub-ból, és hozzáadja azokat a Linux_ vagy Unix-kiszolgálók autorizált_kulcs fájljához, ahol ezt a szkriptet futtatja. Ha nem tudja, hogyan kell SSH kulcsokat létrehozni vagy használni, akkor itt van egy kiváló cikk arról, hogyan kell pontosan ezt megtenni. Feltételezem, hogy létrehozta és hozzáadta saját nyilvános SSH-kulcsait a GitHub-fiókjához.

Az alábbiakban bemutatott nagyon egyszerű és naiv Python-implementáció a fent leírt feladat eléréséhez:

importkérések
import os
 
# Felhasználói adatok beolvasása
unix_user = input ("Írja be Unix felhasználónevét:")
github_user = input ("Írja be GitHub felhasználónevét:")
 
# Biztosra menni .Az ssh könyvtár létezik, és megnyílik a authorised_key kulcs
ssh_dir = '/ home /' + unix_user + '/.ssh / '
ha nem os.pálya.létezik (ssh_dir):
os.makedirs (ssh_dir)
 
autorizált_kulcsok_fájl = nyitott (ssh_dir + 'jogosult kulcsok', 'a')
 
# Kérelem küldése a GiHub API-nak és a válasz tárolása a "válasz" nevű változóban
api_root = "https: // api.github.com "
request_header = 'Elfogadás': 'application / vnd.github.v3 + json '
válasz = kérések.get (api_root + '/ users /' + github_user + '/ keys', fejléc = request_header)
 
## A válasz feldolgozása és a kulcsok csatolása a hitelesített_kulcs fájlhoz
mert én válaszul.json ():
Author_keys_file.írás (i ['kulcs'] + '\ n')

Hagyjuk figyelmen kívül a Python fájlkezelést és a különféle részleteket, és szigorúan vizsgáljuk meg a kérést és a választ. Először importáltuk a request modul importálási kéréseit, ez a könyvtár lehetővé teszi számunkra, hogy API-hívásokat nagyon egyszerűen kezdeményezhessünk. Ez a könyvtár egyben a nyílt forráskódú projektek egyik legjobb példája is. Itt van a hivatalos webhely arra az esetre, ha közelebbről meg szeretné tekinteni a dokumentumokat.

Ezután beállítunk egy api_root változót.

api_root = "https: // api.github.com "

Ez az általános URL-cím az összes URL-ben, amelyre API-hívásokat fogunk indítani. Tehát a „https: // api.github.com ”, bármikor hozzáférnünk kell a https: // api fájlhoz.github.com / users vagy https: // api.github.com / users / csak írunk api_root + '/ felhasználók /' vagy api_root + '/ felhasználók /", ahogy a kódrészlet mutatja.

Ezután beállítottuk a fejlécet HTTPS kérésünkben, jelezve, hogy a válaszok a 3-as verziójú API-ra vonatkoznak, és JSON-formátumban kell lenniük. A GitHub tiszteletben tartja ezeket a fejlécinformációkat.

1.  GET kérés

Tehát most, hogy az URL-jünket és (opcionális) fejlécinformációinkat különféle változókban tároljuk, itt az ideje, hogy elküldjük a kérést.

válasz = kérések.get (api_root + '/ users /' + github_user + '/ keys', fejléc = request_header)

A kérés „get” típusú, mert nyilvánosan elérhető információkat olvasunk a GitHub-tól. Ha valamit a GitHub felhasználói fiók alá írt, akkor a POST-ot használná. Hasonlóképpen más módszereket is használnak más funkciókhoz, például a DELETE az erőforrások, például a tárak törléséhez.

2.  API végpont

Az API végpont, amelyet elérünk, a következő:

https: // api.github.com / users //kulcsok

Minden GitHub erőforrásnak megvan a saját API végpontja. A GET, PUT, DELETE stb. Kéréseit ezután a megadott végponttal szemben tesszük meg. A hozzáférési szinttől függően a GitHub ezután vagy megengedi, hogy teljesítse ezt a kérést, vagy elutasítsa.

A GitHub legtöbb szervezete és felhasználója hatalmas mennyiségű, olvasható és nyilvános információt állít be. Például a GitHub felhasználói fiókomban van néhány nyilvános tárház és nyilvános SSH kulcs, amelyekkel bárki olvashat hozzáférést (GitHub felhasználói fiók nélkül is). Ha részletesebben szeretné ellenőrizni a személyes fiókját, létrehozhat egy „Személyes hozzáférési tokent” a személyes GitHub-fiókjában tárolt kiváltságos információk olvasásához és írásához. Ha egy harmadik féltől származó alkalmazást ír, amelyet nem Ön használnak, akkor az alkalmazás igényelheti az említett felhasználó OAuth tokent.

De amint láthatja, sok hasznos információ érhető el tokenek létrehozása nélkül.

3.  Válasz

A választ a GitHub API szerver adja vissza, és a válasz nevű változóban tárolja. A teljes válasz az itt dokumentált módon többféle módon olvasható. Kifejezetten JSON típusú tartalmat kértünk a GitHub-tól, így feldolgozzuk a kérést, mintha JSON lenne. Ehhez meghívjuk a json () metódust a request modulból, amely azt Python natív objektumokká dekódolja, mint szótárak és listák.

Láthatja, hogy a kulcsok az autor_kulcs fájlhoz vannak-e csatolva:

mert én válaszul.json ():
autorizált_kulcsok_fájl.írás (i ['kulcs'] + '\ n')

Ha kinyomtatja a választ.json () objektumot, észreveszi, hogy ez egy Python lista, amelynek tagjai Python szótárak. Minden szótárnak van egy "kulcs" nevű kulcsa, amelynek nyilvános SSH-kulcsa az adott kulcs értéke. Tehát ezeket az értékeket egyenként hozzáfűzheti a autor_kulcsok fájljához. És most könnyedén SSH-t tehet be a szerverre minden olyan számítógépről, amely rendelkezik bármelyik privát SSH-kulccsal, amely megfelel az imént mellékelt nyilvános kulcsoknak.

További felfedezés

Az API-kkal végzett sok munka magában foglalja az API dokumentációjának alapos vizsgálatát, nem pedig a kódsorok írását. A GitHub esetében a dokumentáció az ipar egyik legfinomabb. De az API-dokumentumok felolvasása és az API-hívások Python használatával meglehetősen érdektelen, mint önálló tevékenység.

Mielőtt továbblépne, azt javasoljuk, hogy álljon elő egy olyan feladattal, amelyet a Python használatával szeretne végrehajtani a GitHub-fiókján. Ezután próbálkozzon úgy, hogy csak a Python, annak függő könyvtárai és a GitHub által biztosított hivatalos dokumentációkat olvassa el. Ez abban is segít, hogy egészségesebb gondolkodásmódot alkalmazzon, ahol megérti, mi történik a kódban, és idővel fokozatosan javítja azt.

Az egér középső gombja nem működik a Windows 10 rendszerben
A középső egérgomb segít átgörgetni a hosszú weboldalakat és a sok adatot tartalmazó képernyőket. Ha ez leáll, akkor a billentyűzet segítségével görge...
Hogyan lehet megváltoztatni a bal és jobb egérgombokat a Windows 10 PC-n
Elég általános, hogy az összes számítógépes egéreszközt ergonómikusan a jobbkezes felhasználók számára tervezték. De vannak olyan egéreszközök, amelye...
Az egérkattintások emulálása az egérrel a Clickless Mouse használatával a Windows 10 rendszerben
Ha az egeret vagy a billentyűzetet nem megfelelő testtartásban, túlzott használat mellett használhatja, számos egészségügyi problémát okozhat, beleért...