Git

Sąsaja su „GitHub“ API naudojant „Python 3“

Sąsaja su „GitHub“ API naudojant „Python 3“
„GitHub“ kaip interneto programa yra didžiulis ir sudėtingas darinys. Pagalvokite apie visas saugyklas, vartotojus, filialus, įsipareigojimus, komentarus, SSH raktus ir trečiųjų šalių programas, kurios yra jo dalis. Be to, yra keli būdai, kaip su juo bendrauti. Yra „GitHub“ darbalaukio programos, „Visual Studio Code“ ir „Atom Editor“ plėtiniai, „git cli“, „Android“ ir „iOS“ programos.

„GitHub“ žmonės ir trečiųjų šalių kūrėjai negali valdyti viso šio sudėtingumo be bendros sąsajos. Šią bendrą sąsają vadiname „GitHub“ API. Kiekvienas „GitHub“ įrankis, pvz., „Cli“, žiniatinklio vartotojo sąsaja ir kt., Naudoja šią bendrą sąsają, kad valdytų išteklius (šaltiniai yra tokie objektai kaip saugyklos, ssh raktai ir kt.).

Šioje pamokoje sužinosime kelis pagrindus, kaip sąsaja su API naudojant „GitHub API v3“ ir „Python3“. Naujausiame „GitHub“ API v4 versijoje reikalaujama sužinoti apie „GraphQL“, dėl kurio mokymosi kreivė yra staigesnė. Taigi aš paliksiu tik trečią versiją, kuri vis dar yra aktyvi ir gana populiari.

Kaip kalbėtis su žiniatinklio API

Žiniatinklio API yra tai, kas leidžia naudoti visas žiniatinklio programos siūlomas paslaugas, pvz., „GitHub“, programiškai naudojant jūsų pasirinktą kalbą. Pavyzdžiui, čia ketiname naudoti „Python“. Techniškai galite padaryti viską, ką darote „GitHub“ naudodami API, tačiau apsiribosime tik viešai prieinamos informacijos skaitymu.

Jūsų „Python“ programa kalbės su API taip pat, kaip jūsų naršyklė kalbės su svetaine. Tai reiškia, dažniausiai per HTTPS užklausas. Šiose užklausose bus skirtingos „dalys“, pradedant nuo užklausos metodo [GET, POST, PUT, DELETE], paties URL, užklausos eilutės, HTTP antraštės ir turinio arba naudingosios apkrovos. Dauguma jų yra neprivalomi. Tačiau mes turėsime pateikti užklausos metodą ir URL, kuriam pateikiame užklausą.

Kas tai yra ir kaip jie pateikiami HTTPS užklausoje, pamatysime lėtai, kai pradėsime rašyti „Python“ scenarijus, kad galėtume bendrauti su „GitHub“.

Pavyzdys

SSH raktų pridėjimas prie naujai sukurto serverio visada yra nerangus procesas. Parašykime „Python“ scenarijų, kuris nuskaitys jūsų viešus SSH raktus iš „GitHub“ ir pridės jį prie „Linux_“ arba „Unix“ serverio, kuriame vykdote šį scenarijų, failo Authorized_keys. Jei nežinote, kaip generuoti ar naudoti SSH raktus, čia yra puikus straipsnis, kaip tai padaryti. Darysiu prielaidą, kad sukūrėte ir pridėjote savo viešus SSH raktus prie savo „GitHub“ paskyros.

Labai paprastas ir naivus „Python“ diegimas aukščiau aprašytai užduočiai pasiekti yra toks, kaip parodyta žemiau:

importo užklausos
importuoti os
 
# Vartotojo įvestis
unix_user = input ("Įveskite savo Unix vartotojo vardą:")
github_user = input ("Įveskite savo„ GitHub “vartotojo vardą:")
 
# Įsitikinti .ssh katalogas egzistuoja ir atidaromas failas Authorized_keys
ssh_dir = '/ namai /' + unix_user + '/.ssh / '
jei ne os.kelias.egzistuoja (ssh_dir):
os.makedirai (ssh_dir)
 
authorised_keys_file = atidaryti (ssh_dir + 'įgalioti_keys', 'a')
 
# Užklausos siuntimas „GiHub“ API ir atsakymo saugojimas kintamajame pavadinimu „atsakymas“
api_root = "https: // api.github.com "
request_header = 'Priimti': 'application / vnd.github.v3 + json '
atsakymas = prašymai.gauti (api_root + '/ users /' + github_user + '/ keys', antraštės = request_header)
 
## Atsakymo apdorojimas ir raktų pridėjimas prie authorised_keys failo
už aš atsakydamas.Json ():
Author_keys_file.rašyti (i ['key'] + '\ n')

Nepaisykime „Python“ failų tvarkymo ir įvairių detalių bei griežtai žiūrėkime į užklausą ir atsakymą. Pirmiausia importavome užklausų modulio importavimo užklausas, ši biblioteka leidžia mums labai lengvai skambinti API. Ši biblioteka taip pat yra vienas geriausių teisingai atlikto atvirojo kodo projektų pavyzdžių. Čia yra oficiali svetainė, jei norite atidžiau pažvelgti į dokumentus.

Toliau nustatome kintamąjį api_root.

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

Tai yra paplitusi visų URL, į kuriuos mes skambinsime API, pakategorės. Taigi užuot vedę „https: // api.github.com “visada, kai turime pasiekti https: // api.github.com / users arba https: // api.github.com / users / mes tiesiog rašome api_root + '/ vartotojai /' arba api_root + '/ vartotojai /", kaip parodyta kodo fragmente.

Tada mes nustatėme antraštę mūsų HTTPS užklausoje, nurodydami, kad atsakymai skirti 3 versijos API ir turėtų būti suformatuoti JSON. „GitHub“ gerbtų šią antraštės informaciją.

1.  GAUTI užklausą

Taigi dabar, kai turime URL ir (pasirinktinai) antraštės informaciją, saugomą skirtinguose kintamuosiuose, laikas pateikti užklausą.

atsakymas = prašymai.gauti (api_root + '/ users /' + github_user + '/ keys', antraštės = request_header)

Užklausa yra „get“ tipo, nes skaitome viešai prieinamą informaciją iš „GitHub“. Jei ką nors rašytumėte savo „GitHub“ vartotojo abonemente, naudotumėte POST. Panašiai kiti metodai yra skirti kitoms funkcijoms, pavyzdžiui, „DELETE“ yra ištrinami ištekliai, pvz., Saugyklos.

2.  API pabaigos taškas

API galas, kurio siekiame, yra:

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

Kiekvienas „GitHub“ išteklius turi savo API galinį tašką. Tada jūsų užklausos GET, PUT, DELETE ir kt. Pateikiamos pagal jūsų pateiktą galinį tašką. Priklausomai nuo prieigos lygio, „GitHub“ leis jums patenkinti šią užklausą arba ją atmesti.

Dauguma „GitHub“ organizacijų ir vartotojų nustato didžiulį kiekį skaitomos ir viešos informacijos. Pvz., Mano „GitHub“ vartotojo paskyroje yra pora viešų saugyklų ir viešų SSH raktų, kuriuos kiekvienas gali skaityti (net ir neturėdamas „GitHub“ vartotojo paskyros). Jei norite išsamiau valdyti savo asmeninę paskyrą, galite sukurti „asmeninės prieigos žetoną“, kad galėtumėte skaityti ir rašyti privilegijuotą informaciją, saugomą jūsų asmeninėje „GitHub“ paskyroje. Jei rašote trečiosios šalies programą, skirtą naudoti kitiems vartotojams, o ne jūs, tada jūsų programai reikės to vartotojo OAuth prieigos rakto.

Bet, kaip matote, prie daug naudingos informacijos galima prisijungti nesukuriant jokio prieigos rakto.

3.  Atsakymas

Atsakymas grąžinamas iš „GitHub“ API serverio ir saugomas kintamajame pavadinimu „response“. Visą atsakymą galima perskaityti keliais būdais, kaip čia dokumentuota. Mes aiškiai paprašėme JSON tipo turinio iš „GitHub“, todėl mes apdorosime užklausą, tarsi tai būtų JSON. Norėdami tai padaryti, mes iškviečiame metodą json () iš užklausų modulio, kuris jį dekoduos į „Python“ vietinius objektus, tokius kaip žodynai ir sąrašai.

Čia galite pamatyti, kaip raktai yra pridėti prie autorizuotų raktų failo šiame cikle:

už aš atsakydamas.Json ():
Author_keys_file.rašyti (i ['key'] + '\ n')

Jei atspausdinsite atsakymą.json () objektą, pastebėsite, kad tai yra „Python“ sąrašas, kurio nariai yra „Python“ žodynai. Kiekviename žodyne yra raktas, pavadintas „raktas“, kurio viešasis SSH raktas yra šio rakto vertė. Taigi šias vertes galite pridėti po vieną prie savo author_keys failo. Dabar galite lengvai SSH į savo serverį iš bet kurio kompiuterio, kuriame yra bet kuris iš privačių SSH raktų, atitinkančių vieną iš ką tik pridėtų viešųjų raktų.

Tyrinėdami toliau

Daug darbo su API apima kruopštus pačios API dokumentų tikrinimas, o ne kodo eilučių rašymas. „GitHub“ atveju dokumentai yra vieni iš geriausių pramonėje. Tačiau skaityti API dokumentus ir atlikti API skambučius naudojant „Python“ yra gana neįdomu kaip atskira veikla.

Prieš eidami toliau, rekomenduočiau sugalvoti vieną užduotį, kurią norėtumėte atlikti naudodami „Python“ savo „GitHub“ paskyroje. Tada pabandykite tai įgyvendinti perskaitydami tik oficialius „Python“, jo priklausomų bibliotekų ir „GitHub“ pateiktus dokumentus. Tai taip pat padės jums priimti sveikesnį mąstymą, kai suprasite, kas vyksta jūsų kode, ir laikui bėgant palaipsniui jį tobulinsite.

Peržiūrėkite pelės mygtukus skirtingai programinei įrangai naudodami „X-Mouse Button Control“
Galbūt jums reikia įrankio, kuris galėtų pakeisti jūsų pelės valdymą kiekvienoje jūsų naudojamoje programoje. Tokiu atveju galite išbandyti programą, ...
„Microsoft Sculpt Touch“ belaidžio pelės apžvalga
Neseniai skaičiau apie „Microsoft Sculpt Touch“ belaidę pelę ir nusprendė ją nusipirkti. Kurį laiką naudojęs, nusprendžiau pasidalinti savo patirtimi....
„AppyMouse“ ekrano „Trackpad“ ir pelės žymeklis, skirtas „Windows“ tabletėms
Planšetinių kompiuterių vartotojai dažnai praleidžia pelės žymeklį, ypač kai įprasta naudoti nešiojamus kompiuterius. Jutiklinio ekrano išmanieji tele...