Git

Взаимодействие с API на GitHub с помощта на Python 3

Взаимодействие с API на GitHub с помощта на Python 3
GitHub като уеб приложение е огромен и сложен обект. Помислете за всички хранилища, потребители, клонове, ангажименти, коментари, SSH ключове и приложения на трети страни, които са част от него. Освен това има множество начини за комуникация с него. Има настолни приложения за GitHub, разширения за Visual Studio Code и Atom Editor, git cli, Android и iOS приложения, за да назовем само няколко.

Хората в GitHub, както и разработчиците на трети страни, не могат да управляват цялата тази сложност без общ интерфейс. Този общ интерфейс е това, което наричаме GitHub API. Всяка помощна програма на GitHub като cli, уеб потребителски интерфейс и т.н. използва този общ интерфейс за управление на ресурси (ресурсите са обекти като хранилища, ssh ключове и т.н.).

В този урок ще научим няколко основи за това как човек взаимодейства с API, използвайки GitHub API v3 и Python3. Най-новият v4 на GitHub API изисква да научите за GraphQL, което води до по-стръмна крива на обучение. Така че ще се придържам само към версия 3, която все още е активна и доста популярна.

Как да разговаряте с уеб API

Уеб API са това, което ви позволява да използвате всички услуги, предлагани от уеб приложение, като GitHub, програмно използвайки език по ваш избор. Например, ние ще използваме Python за нашия случай на употреба, тук. Технически можете да правите всичко, което правите на GitHub, като използвате API, но ние ще се ограничим само до четене на публично достъпна информация.

Вашата програма Python ще разговаря с API точно по същия начин, както браузърът ви говори с уебсайт. Тоест, най-вече чрез HTTPS заявки. Тези заявки ще съдържат различни „части“, започвайки от метода на заявката [GET, POST, PUT, DELETE], самия URL адрес, низ за заявка, HTTP заглавка и тяло или полезен товар. Повечето от тях не са задължителни. Ще трябва обаче да предоставим метод на заявка и URL адреса, към който отправяме искането.

Какво представляват това и как те са представени в HTTPS заявка е нещо, което ще видим бавно, когато започнем да пишем Python Scripts за взаимодействие с GitHub.

Пример

Добавянето на SSH ключове към новосъздадения сървър винаги е тромав процес. Нека напишем скрипт на Python, който ще извлече вашите публични SSH ключове от GitHub и ще го добави към файла auth_keys на всеки Linux или Unix сървър, където стартирате този скрипт. Ако не знаете как да генерирате или използвате SSH ключове, ето една отлична статия за това как да направите точно това. Предполагам, че сте създали и добавили свои собствени публични SSH ключове към вашия акаунт в GitHub.

Много проста и наивна реализация на Python за постигане на описаната по-горе задача е показана по-долу:

заявки за внос
внос os
 
# Получаване на въвеждане от потребителя
unix_user = input ("Въведете вашето Unix потребителско име:")
github_user = input ("Въведете вашето потребителско име за GitHub:")
 
# Уверявам се .ssh съществува директория и се отваря файл санкционирани клавиши
ssh_dir = '/ home /' + unix_user + '/.ssh / '
ако не ос.път.съществува (ssh_dir):
операционна система.македири (ssh_dir)
 
оторизирани_кипове_файл = отворен (ssh_dir + 'оторизирани_клавиши', 'а')
 
# Изпращане на заявка до API на GiHub и съхраняване на отговора в променлива, наречена 'response'
api_root = "https: // api.github.com "
request_header = 'Приемам': 'application / vnd.github.v3 + json '
отговор = заявки.get (api_root + '/ users /' + github_user + '/ keys', headers = request_header)
 
## Обработка на отговора и добавяне на ключове към файл auth_keys
за i в отговор.json ():
файл_оторизирани_ключове.запис (i ['ключ'] + '\ n')

Нека да игнорираме обработката на файлове на Python и различни подробности и да разгледаме стриктно заявката и отговора. Първо импортирахме заявките за импортиране на модул за заявки, тази библиотека ни позволява да извършваме API извиквания много лесно. Тази библиотека е и един от най-добрите примери за проект с отворен код, направен правилно. Ето официалния сайт, в случай че искате да разгледате по-отблизо документите.

След това задаваме променлива api_root.

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

Това е често срещаният подниз във всички URL адреси, към които ще извършваме API извиквания. Така че вместо да пишете „https: // api.github.com ”всеки път, когато имаме нужда от достъп до https: // api.github.com / users или https: // api.github.com / потребители / ние просто пишем api_root + '/ потребители /' или api_root + '/ потребители /', както е показано в кодовия фрагмент.

След това задаваме заглавката в нашата HTTPS заявка, посочвайки, че отговорите са предназначени за версия 3 API и трябва да бъдат форматирани в JSON. GitHub би уважил тази информация в заглавката.

1.  ВЗЕМЕТЕ заявка

Така че сега, когато имаме нашия URL и (по избор) информация за заглавието, съхранявани в различни променливи, е време да отправим заявката.

отговор = заявки.get (api_root + '/ users /' + github_user + '/ keys', headers = request_header)

Заявката е от тип „get“, защото четем публично достъпна информация от GitHub. Ако пишете нещо под вашия потребителски акаунт в GitHub, ще използвате POST. По същия начин други методи са предназначени за други функции като DELETE е за изтриване на ресурси като хранилища.

2.  Крайна точка на API

Крайната точка на API, към която се стремим, е:

https: // api.github.com / потребители // бутони

Всеки ресурс на GitHub има своя собствена крайна точка на API. След това вашите заявки за GET, PUT, DELETE и т.н. се правят спрямо крайната точка, която сте предоставили. В зависимост от нивото на достъп, което имате, GitHub ще ви позволи да преминете с тази заявка или да я откажете.

Повечето организации и потребители на GitHub задават огромно количество информация, четлива и публична. Например, моят потребителски акаунт в GitHub има няколко публични хранилища и публични SSH ключове, до които всеки може да чете достъп (дори без потребителски акаунт в GitHub). Ако искате да имате по-фин контрол върху личния си акаунт, можете да генерирате „Личен токен за достъп“, за да четете и пишете привилегирована информация, съхранявана във вашия личен акаунт в GitHub. Ако пишете приложение на трета страна, предназначено да бъде използвано от потребители, различни от вас, тогава OAuth Token на споменатия потребител е това, което вашето приложение ще изисква.

Но както можете да видите, много полезна информация може да бъде достъпна без създаване на какъвто и да е маркер.

3.  Отговор

Отговорът се връща от GitHub API сървъра и се съхранява в променливата с име отговор. Целият отговор може да се прочете по няколко начина, както е документирано тук. Изрично поискахме съдържание от тип JSON от GitHub, така че ще обработим заявката, сякаш е JSON. За целта извикваме метода json () от модула заявки, който ще го декодира в Python естествени обекти като речници и списъци.

Можете да видите ключовете, които се добавят към файла auth_keys в този цикъл for:

за i в отговор.json ():
файл_оторизирани_ключове.запис (i ['ключ'] + '\ n')

Ако отпечатате отговора.json (), ще забележите, че това е списък на Python с речници на Python като членове. Всеки речник има ключ с име „ключ“ с вашия публичен SSH ключ като стойност за този ключ. Така че можете да добавяте тези стойности една по една към вашия файл auth_keys. И сега можете лесно да SSH във вашия сървър от всеки компютър, който има някой от частните SSH ключове, съответстващ на един от публичните ключове, които току-що добавихме.

Проучване по-нататък

Много работа с API-та включва внимателна проверка на самата API-документация повече от писане на редове код. В случай на GitHub, документацията е една от най-добрите в бранша. Но четенето на API документи и извършването на API повиквания с помощта на Python е доста безинтересно като самостоятелна дейност.

Преди да продължите по-нататък, бих ви препоръчал да измислите една задача, която бихте искали да изпълните с помощта на Python във вашия акаунт в GitHub. След това се опитайте да го приложите, като прочетете само официалните документации, предоставени от Python, неговите зависими библиотеки и GitHub. Това също ще ви помогне да възприемете по-здравословен начин на мислене, където разбирате какво се случва във вашия код и постепенно да го подобрявате с течение на времето.

Курсорът скача или се движи произволно, докато пишете в Windows 10
Ако установите, че курсорът на вашата мишка скача или се движи самостоятелно, автоматично, произволно, докато пишете в лаптоп или компютър на Windows,...
Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...
Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...