Git

Saskarne ar GitHub API, izmantojot Python 3

Saskarne ar GitHub API, izmantojot Python 3
GitHub kā tīmekļa lietojumprogramma ir milzīga un sarežģīta vienība. Padomājiet par visiem krātuvēm, lietotājiem, filiālēm, saistībām, komentāriem, SSH atslēgām un trešo pušu lietotnēm, kas ir tās sastāvdaļa. Turklāt ir vairāki veidi, kā ar to sazināties. Ir GitHub darbvirsmas lietotnes, Visual Studio koda un Atom redaktora paplašinājumi, git cli, Android un iOS lietotnes, lai nosauktu tikai dažus.

GitHub lietotāji un trešo pušu izstrādātāji, iespējams, nevar pārvaldīt visu šo sarežģītību bez kopīgas saskarnes. Šo kopīgo saskarni saucam par GitHub API. Katra GitHub utilīta, piemēram, klients, tīmekļa lietotāja saskarne utt., Resursu pārvaldībai izmanto šo vienoto saskarni (resursi ir tādas vienības kā krātuves, ssh atslēgas utt.).

Šajā apmācībā mēs uzzināsim dažus pamatus par to, kā viens saskaras ar API, izmantojot GitHub API v3 un Python3. Jaunākajā GitHub API v4 versijā jums jāapgūst GraphQL, kā rezultātā mācīšanās līkne ir straujāka. Tāpēc es pieturēšos pie trešās versijas, kas joprojām ir aktīva un diezgan populāra.

Kā runāt ar tīmekļa API

Tīmekļa API ir tas, kas ļauj programmatiski izmantot izvēlēto valodu, izmantojot visus tīmekļa lietotnes piedāvātos pakalpojumus, piemēram, GitHub. Piemēram, šeit mēs izmantosim Python. Tehniski jūs varat darīt visu, ko darāt GitHub, izmantojot API, taču mēs aprobežosimies tikai ar publiski pieejamās informācijas lasīšanu.

Jūsu Python programma runās ar API tāpat kā jūsu pārlūkprogramma sarunās ar vietni. Tas ir, galvenokārt, izmantojot HTTPS pieprasījumus. Šajos pieprasījumos būs dažādas “daļas”, sākot ar pieprasījuma metodi [GET, POST, PUT, DELETE], pašu URL, vaicājuma virkni, HTTP galveni un pamattekstu vai lietderīgo kravu. Lielākā daļa no tām nav obligātas. Tomēr mums būs jānorāda pieprasījuma metode un URL, uz kuru mēs iesniedzam pieprasījumu.

Kas tie ir un kā tie tiek attēloti HTTPS pieprasījumā, mēs redzēsim lēni, sākot rakstīt Python skriptus, lai mijiedarbotos ar GitHub.

Piemērs

SSH atslēgu pievienošana jaunizveidotajam serverim vienmēr ir neveikls process. Uzrakstīsim Python skriptu, kas no jūsu GitHub izgūs jūsu publiskās SSH atslēgas un pievienos to failam Authorized_keys jebkurā Linux vai Unix serverī, kurā palaižat šo skriptu. Ja nezināt, kā ģenerēt vai izmantot SSH atslēgas, šeit ir lielisks raksts par to, kā tieši to izdarīt. Es pieņemu, ka jūs esat izveidojis un pievienojis savas publiskās SSH atslēgas savam GitHub kontam.

Ļoti vienkārša un naiva Python ieviešana, lai sasniegtu iepriekš aprakstīto uzdevumu, ir parādīta zemāk:

importa pieprasījumi
importēt os
 
# Lietotāja ievadīšana
unix_user = input ("Ievadiet savu Unix lietotājvārdu:")
github_user = input ("Ievadiet savu GitHub lietotājvārdu:")
 
# Pārliecināties .ssh direktorijs pastāv un atver autorizēto atslēgu failu
ssh_dir = '/ home /' + unix_user + '/.ssh / '
ja ne os.ceļš.pastāv (ssh_dir):
os.makedirs (ssh_dir)
 
authorised_keys_file = atvērts (ssh_dir + 'authorised_keys', 'a')
 
# Pieprasījuma nosūtīšana GiHub API un atbildes saglabāšana mainīgajā ar nosaukumu “atbilde”
api_root = "https: // api.github.com "
request_header = 'Pieņemt': 'application / vnd.github.v3 + json '
atbilde = pieprasījumi.get (api_root + '/ users /' + github_user + '/ keys', galvenes = request_header)
 
## Atbildes apstrāde un atslēgu pievienošana autorizēto taustiņu failam
par i atbildot.json ():
Authorized_keys_file.rakstīt (i ['key'] + '\ n')

Neņemsim vērā Python failu apstrādi un dažādas detaļas un stingri izskatīsim pieprasījumu un atbildi. Vispirms mēs importējām pieprasījumu moduļa importēšanas pieprasījumus. Šī bibliotēka ļauj mums ļoti viegli veikt API zvanus. Šī bibliotēka ir arī viens no labākajiem atklātā pirmkoda projekta paraugiem. Šeit ir oficiālā vietne, ja vēlaties tuvāk iepazīties ar dokumentiem.

Tālāk mēs iestatām mainīgo api_root.

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

Šis ir kopīgais apakšvirsraksts visos vietrāžos URL, uz kuriem veiksim API izsaukumus. Tāpēc tā vietā, lai ierakstītu “https: // api.github.com ”vienmēr, kad mums ir jāpiekļūst https: // api.github.com / users vai https: // api.github.com / users / mēs vienkārši rakstām api_root + '/ lietotāji /' vai api_root + '/ lietotāji /", kā parādīts koda fragmentā.

Pēc tam mēs iestatījām galveni mūsu HTTPS pieprasījumā, norādot, ka atbildes ir domātas 3. versijas API un tām jābūt formatētām JSON. GitHub ievēros šo galvenes informāciju.

1.  IEGŪT pieprasījumu

Tāpēc tagad, kad mūsu URL un (pēc izvēles) galvenes informācija ir saglabāta dažādos mainīgajos, ir pienācis laiks iesniegt pieprasījumu.

atbilde = pieprasījumi.get (api_root + '/ users /' + github_user + '/ keys', galvenes = request_header)

Pieprasījums ir “get” tips, jo mēs lasām publiski pieejamu informāciju no GitHub. Ja kaut ko rakstītu zem sava GitHub lietotāja konta, izmantotu POST. Tāpat citas metodes ir domātas citām funkcijām, piemēram, DELETE ir tādu resursu kā krātuves dzēšanai.

2.  API galapunkts

API galapunkts, uz kuru mēs vēršamies, ir:

https: // api.github.com / users // taustiņi

Katram GitHub resursam ir savs API galapunkts. Pēc tam jūsu pieprasījumi GET, PUT, DELETE utt. Tiek veikti pret jūsu sniegto galapunktu. Atkarībā no jūsu pieejamības līmeņa GitHub pēc tam vai nu ļaus jums izpildīt šo pieprasījumu, vai arī to noraidīs.

Lielākā daļa GitHub organizāciju un lietotāju nosaka milzīgu informācijas daudzumu, kas ir lasāms un publisks. Piemēram, manam GitHub lietotāja kontam ir pāris publiski krātuves un publiskas SSH atslēgas, kurām ikviens var piekļūt lasīšanai (pat bez GitHub lietotāja konta). Ja vēlaties precīzāk kontrolēt savu personīgo kontu, varat izveidot “Personal Access Token”, lai lasītu un rakstītu priviliģētu informāciju, kas saglabāta jūsu personīgajā GitHub kontā. Ja rakstāt trešās puses lietojumprogrammu, kas paredzēta lietošanai citiem lietotājiem, nevis jūs, minētā lietotāja OAuth marķieris ir tas, kas būtu nepieciešams jūsu lietojumprogrammai.

Bet, kā redzat, daudz noderīgas informācijas var piekļūt, neveidojot nevienu marķieri.

3.  Atbilde

Atbilde tiek atgriezta no GitHub API servera un tiek saglabāta mainīgajā ar nosaukumu atbilde. Visu atbildi varēja lasīt vairākos veidos, kā šeit dokumentēts. Mēs nepārprotami pieprasījām JSON tipa saturu no GitHub, tāpēc mēs apstrādāsim pieprasījumu, it kā tas būtu JSON. Lai to izdarītu, mēs no pieprasījumu moduļa izsaucam metodi json (), kas to atšifrēs Python vietējos objektos, piemēram, vārdnīcās un sarakstos.

Šajā ciklā var redzēt, kā atslēgas tiek pievienotas autorizēto taustiņu failam:

par i atbildot.json ():
Authorized_keys_file.rakstīt (i ['key'] + '\ n')

Ja drukājat atbildi.json () objektu, jūs ievērosiet, ka tas ir Python saraksts, kurā kā Python vārdnīcas ir dalībnieki. Katrā vārdnīcā ir atslēga ar nosaukumu “atslēga”, kuras vērtība ir jūsu publiskā SSH atslēga. Tātad šīs vērtības var pievienot pa vienam savam autorizēto taustiņu failam. Un tagad jūs varat viegli SSH savā serverī no jebkura datora, kurā ir kāds no privātajiem SSH taustiņiem, kas atbilst kādai no tikko pievienotajām publiskajām atslēgām.

Izpētīt tālāk

Liels darbs ar API ietver rūpīgu pašas API dokumentācijas pārbaudi, nevis koda rindiņu rakstīšanu. GitHub gadījumā dokumentācija ir viena no labākajām nozarē. Bet API dokumentu lasīšana un API izsaukumu veikšana, izmantojot Python, ir diezgan neinteresanta kā atsevišķa darbība.

Pirms dodaties tālāk, es iesaku jums izdomāt vienu uzdevumu, kuru vēlaties veikt, izmantojot Python savā GitHub kontā. Pēc tam mēģiniet to īstenot, izlasot tikai oficiālās dokumentācijas, ko nodrošina Python, no tās atkarīgās bibliotēkas un GitHub. Tas arī palīdzēs jums pieņemt veselīgāku domāšanu, kur jūs saprotat, kas notiek jūsu kodā, un laika gaitā to pakāpeniski uzlabosiet.

HD Remastered spēles operētājsistēmai Linux, kurām nekad agrāk nebija Linux laidiena
Daudzi spēļu izstrādātāji un izdevēji nāk klajā ar veco spēļu HD remaster, lai pagarinātu franšīzes darbības laiku. Lūdzu, faniem, kas pieprasa saderī...
Kā izmantot AutoKey, lai automatizētu Linux spēles
AutoKey ir darbvirsmas automatizācijas lietderība operētājsistēmām Linux un X11, kas ieprogrammēta Python 3, GTK un Qt. Izmantojot skriptu un MACRO fu...
Kā parādīt FPS skaitītāju Linux spēlēs
Linux spēles ieguva lielu impulsu, kad Valve 2012. gadā paziņoja par Linux atbalstu Steam klientam un viņu spēlēm. Kopš tā laika daudzas AAA un indie ...