Co to do cholery jest API?
Dlaczego używanie interfejsów API w kodzie przypomina zabawę klockami LEGO.
Być może słyszałeś termin „API” w większości samouczków dotyczących kodowania, które przeczytałeś. Jeśli wygooglujesz „API”, dostaniesz duży akapit o tym, jak to oznacza „Interfejs programowania aplikacji” oraz wyjaśnienie o „REST” i „protokołach” i tak dalej, jakby to czyniło to jaśniejszym.
Wszystko, co musisz wiedzieć o interfejsach API, to to, że są one listą funkcji, których możesz użyć do automatyzacji zadań i pozyskiwania danych . Możesz na przykład:
- Użyj interfejsu API Gmaila , aby zautomatyzować odczytywanie i filtrowanie skrzynki odbiorczej za pomocą kodu
- Użyj interfejsu API Reddit , aby utworzyć bota, który automatycznie konwertuje jednostki metryczne na imperialne za pomocą kodu
- Użyj Fitbit API , aby pobrać dane z Fitbit i wysłać je do niestandardowej aplikacji na telefonie
W tym samym duchu interfejsy API zapewniają małe fragmenty kodu, które umożliwiają tworzenie programów. Posiadają takie funkcje jak:
getLikeCount()createGoogleSheet()sendEmail()
Skąd wiemy, czym są te „fragmenty kodu”?
Każdy interfejs API jest dostarczany z dokumentacją zawierającą listę wszystkich sposobów, w jakie można go używać, coś w rodzaju katalogu LEGO. Pokazuje wszystkie rzeczy, które możesz zrobić za pomocą interfejsu API, co w przypadku interfejsu API Reddit może oznaczać „opublikuj komentarz” lub „zapisz post”. Dokumentację często można znaleźć online na stronie internetowej firmy, zwykle na jakiejś ukrytej stronie programisty. „ Rzeczy, które możesz zrobić” nazywane są „metodami API”.
Niektóre dokumenty są lepsze od innych , ale ostatecznie dokumentacja to lista fragmentów gotowego kodu i funkcji, których można użyć we własnym kodzie .
Najłatwiejszy interfejs API: uzyskiwanie adresu IP
Przyjrzyjmy się interfejsowi API, który składa się tylko z jednego elementu: interfejsu API IPify , który informuje o Twoim adresie IP.
Adres IP jest jak numer telefonu lub adres pocztowy komputera. Mówi internetowi, gdzie Cię znaleźć. Strony internetowe mają również własne adresy IP.
Wyślemy jedno polecenie do IPify.org i zapytamy, jaki jest nasz adres IP. Działa to zarówno w systemie Mac OS, jak i Windows.
Otwórz Terminal (Mac) lub Wiersz polecenia (Windows) i wpisz następujące polecenie:
curl 'https://api.ipify.org?format=json'
What the command looks like in Terminal on a MacBook.
{"ip": "68.142.10.250"}
Aby sprawdzić, czy to jest Twój prawdziwy adres IP, odwiedź witrynę WhatIsMyIPAddress.com .
JSON to jeden z najpopularniejszych formatów danych dla nowoczesnych internetowych interfejsów API. Umieszcza wszystko w {“key”: value}formacie, aby wszystkie dane miały etykietę. Inne interfejsy API mogą używać formatu XML , który ma podobny <Key>value</Key>format, a wiele interfejsów API umożliwia wybór jednego z nich.
To jest sedno wielu internetowych interfejsów API. Prosimy stronę internetową o podanie pewnych danych, a ona odpowiada tymi danymi. W ten sposób działają interfejsy API powszechnie używane w badaniach naukowych, takie jak interfejsy API NASA , USGS i USFDA . Możemy uzyskać dane o satelitach kosmicznych, wysokość gór w USA i listę leków zatwierdzonych przez FDA, jeśli tylko o to poprosimy.
A co z automatyzacją aktywności użytkowników?
Co jeśli nie chcemy po prostu pobierać danych ze strony internetowej? Co powiesz na tworzenie botów lub automatyzację naszego dnia pracy?
W tym miejscu pojawiają się bardziej skomplikowane interfejsy API. Nadal obejmują one pojedyncze polecenia, w których rozmawiamy ze stroną internetową lub aplikacją i mówimy: „Chcę uzyskać te dane (lub wysłać te dane)”. A aplikacja odpowiednio reaguje. Ale teraz łączymy wiele poleceń, aby wykonać bardziej wyrafinowane działania.
Wieloetapowy przykład: Reddit API
Reddit to największe na świecie forum internetowe. Reddit publikuje swoje API online i wymienia wszystko, co możesz zrobić z ich API na pasku bocznym po lewej stronie.
Na pasku bocznym znajdują się metody, których możemy użyć, aby zdobyć naszą listę znajomych, karmę, trofea i nie tylko. Każda czynność, którą użytkownik może wykonać na stronie, ma swoją własną, odpowiadającą jej metodę API.
Jeśli odwiedzimy stronę Reddit API i przewiniemy w dół, znajduje się sekcja, linki i komentarze , która pokazuje wszystkie normalne interakcje użytkownika i odpowiadające im metody API. Moglibyśmy ich użyć do stworzenia konta bota lub czegoś podobnego.
Mamy codzienne interakcje z użytkownikami, takie jak komentowanie ( /api/comment), obserwowanie i zapisywanie postów . Reddit API umożliwia robienie tego za pomocą kodu. Przedrostek /api/we wszystkich metodach wygląda dziwnie, ale wyjaśnimy to za chwilę.
Z kolei interfejs Google Search API ma tylko jedną metodę, a mianowicie wyszukiwanie :
Interfejs API wyszukiwarki Google jest prosty, ponieważ Google wie, że programistom zależy tylko na jednej rzeczy: wyszukiwaniu.
Celem każdego interfejsu API jest sprowadzenie wszystkich działań i opcji ze zwykłej strony internetowej lub aplikacji do tego rodzaju gotowych do kodu funkcji „jednej linijki”, których możemy używać w Pythonie, JavaScript, Bash, Javie, R itp. .
- Interfejs API witryny chce, abyś mógł wykonywać normalne interakcje użytkownika (logowanie, komentowanie, wyszukiwanie, usuwanie rzeczy) przy jak najmniejszej ilości kodu
- Interfejs API do noszenia umożliwia pobieranie danych, wysyłanie użytkownikowi alertu lub zmianę ustawień urządzenia do noszenia przy użyciu jak najmniejszej ilości kodu
Jak wygląda korzystanie z API w kodzie
Jak to wygląda w kodzie? Reddit API mówi, że metoda komentowania nazywa się /api/comment. Co to znaczy? Nie możemy po prostu umieścić /api/commentpliku Pythona i zakończyć to, prawda? Prawidłowy.
Istnieje kilka różnic między używaniem interfejsu API do komunikowania się ze stroną internetową a używaniem interfejsu API urządzenia do noszenia. Oba są nadal podobne do LEGO, ponieważ pozwalają robić złożone rzeczy za pomocą kilku linii kodu, ale sam kod wygląda zupełnie inaczej. Dlatego podamy dla nich osobne przykłady.
Więcej szczegółów: interfejsy API sieci Web w kodzie
Widzieliśmy, że metody Reddit API są wymienione z kilkoma ukośnikami:
To w ogóle nie wygląda jak Python, JavaScript ani kod. To mówi /api/? Co to jest?
W rzeczywistości są to części linków HTTP , tak jak te, które wpisujesz w przeglądarce Chrome lub Firefox.
Dlaczego jednak linki internetowe? Czy umieszczamy je bezpośrednio w naszym kodzie? Tak i nie bez powodu.
Kiedy korzystamy z internetowego interfejsu API, takiego jak Reddit, Gmail, a nawet interfejsy API NIH lub NASA , nasz kod zasadniczo komunikuje się ze stroną internetową. Strony internetowe używają links/that/look/like/thisdo oddzielenia swoich stron i funkcji. Google żyje w google.com, ale wyniki wyszukiwania są dostępne w google.com/search.
W końcu umieścimy ten punkt końcowy w naszym kodzie w taki sposób:
google_search_api = "https://www.googleapis.com/customsearch/"
Teraz kod tak naprawdę nie komunikuje się ze stroną internetową, ale serwerem (jak strona bez głowy), ale organizuje rzeczy tak samo z /slashes/, jeśli chodzi o interfejsy API. Podobnie jak w przypadku publikowania bloga jako zwykły użytkownik w witrynie internetowej ze strony website.com/post, Twój kod może komunikować się z punktem końcowym publikowania bloga serwera interfejsu API pod api.website.com/postadresem website.com/api/postlub podobnym.
Pomyśl o tym w ten sposób: kiedy sprawdzasz skrzynkę odbiorczą Gmaila na laptopie lub telefonie, Twoja przeglądarka:
- Dotrzyj przez Internet do
gmail.com - Powiedz
gmail.com„Czy mogę umieścić stronę internetową pod/mail/inbox?” - Następnie Gmail wysyła stronę internetową Twojej skrzynki odbiorczej z powrotem do przeglądarki, abyś mógł ją zobaczyć.
- Osiągnąć
gmail.googleapis.com - Zapytaj
gmail.googleapis.como swoją skrzynkę e-mail - Wtedy interfejs API Gmaila odeśle tylko dane zamiast całej witryny
Czyste dane są przyjazne dla kodu i właśnie do tego służą interfejsy API.
Przykład: pobieranie leków z API openFDA
Oto krótki przykład Pythona do wysyłania zapytań do openFDA API USFDA , który zawiera listę wszystkich leków zatwierdzonych przez FDA:
# import an HTTP library
import requests
# Tell "requests" to request data from the openFDA "Drugs" endpoint
drugs_http_endpoint = "https://api.fda.gov/drug/label.json?limit=100"
drugs = requests.get(drugs_http_endpoint)
# Print all the data that we got from USFDA about drugs
print(drugs.json())
Uwaga: powyższy przykład wykorzystuje popularną requests bibliotekę HTTP dla Pythona.
A co z interfejsami API dla Bluetooth i urządzeń do noszenia?
Korzystanie z interfejsu API urządzenia do noszenia (takiego jak Fitbit lub Apple Watch) różni się nieco od korzystania z interfejsu API witryny internetowej, ale są one udokumentowane tak samo. Na przykład zamiast metody „komentarz” interfejs API do noszenia może mieć następujące metody:
- uzyskać tętno
- pobierz dane ruchu (z akcelerometru i żyroskopu)
- wyślij użytkownikowi alert
Przykład noszenia: API Fitbit
Zamiast pytać jakąś witrynę o dane, możesz chcieć zakodować określone urządzenie, takie jak Fitbit .
Interfejs API Fitbit składa się z wielu elementów . Ma nawet własny interfejs API sieci Web.
Przyjrzyjmy się jednej z części interfejsu API urządzenia .
Na stronie interfejsu API urządzenia lewy pasek boczny zawiera listę wszystkich elementów interfejsu API, z którymi możemy wchodzić w interakcje.
Każda z tych większych kategorii jest swego rodzaju zbiorem elementów LEGO , o których elementach możemy przeczytać więcej, a następnie użyć ich we własnym kodzie. Klocki LEGO to takie rzeczy jak:
- czytanie lub ustawianie zegara
- odczyt akcelerometru (część trackera ruchu)
- odczytywanie czujnika tętna itp.
Istnieje wiele informacji, ale strona zawiera krótki przykładowy skrypt, a następnie listę elementów LEGO związanych z tętnem, których możemy użyć we własnym kodzie:
activated(mówi nam, czy czujnik tętna jest włączony, czy nie)heartRate(mówi nam aktualne tętno)onactivate(funkcja, której możemy użyć, aby powiedzieć Fitbit, co ma zrobić, gdy tylko czujnik tętna zostanie aktywowany)
W pseudokodzie powyższe oznacza:
import HeartRateSensor code from Fitbit's API
if HeartRateSensor was imported {
hrm = the HeartRateSensor
Listen for heart rate sensor to send data, then print it.
Start the heart rate sensor (which will then start the above "Listen" code)
}
Jeśli utkniesz podczas korzystania z interfejsu API, firma, która go stworzyła, zazwyczaj ma dokumentację online, którą możesz wyszukać w Google. (Przykład: wyszukiwanie „Fitbit API” pokaże rzeczywisty Fitbit API jako najlepszy wynik wyszukiwania.) Jeśli to się nie powiedzie, możesz skontaktować się bezpośrednio z firmą, aby zapytać, czy ma dokumentację API, którą może wysłać.
W niektórych przypadkach dokumentacja API może być naprawdę rozczarowująca , co prowadzi do frustracji społeczności programistów. Ale jest to okazja do wniesienia wkładu i wypełnienia luk lub stworzenia własnego, lepszego produktu.
Streszczenie
Inżynierowie piszą interfejsy API w nadziei, że opracujesz i wykorzystasz ich aplikacje, zestawy danych i urządzenia do noszenia. Teraz, gdy znasz interfejsy API, sprawdź te popularne interfejsy API, aby rozpocząć . Najczęściej wszystkie Twoje ulubione technologie i aplikacje mają interfejsy API, których możesz użyć w następnym projekcie.
Jeśli masz jakieś pytania lub uwagi, napisz do nas na adres [email protected] lub wyślij wiadomość na Instagramie (@protobioengineering) . Dziękuje za przeczytanie.
powiązane linki
- GitHub dla biologów
- Dataverse API: dane badawcze i oprogramowanie typu open source
- Listonosz: tworzenie i testowanie interfejsów API

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































