Co to do cholery jest API?

Mar 20 2023
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ś.

Dlaczego używanie interfejsów API w kodzie przypomina zabawę klockami LEGO.

Zdjęcie Xavi Cabrera na Unsplash

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
  • Jak możemy wykorzystać interfejs API na forum takim jak Reddit. Oryginalne zdjęcie Xaviego Cabrery na Unsplash
Witryna i katalog LEGO Pick a Brick.

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”.

Slack API ma zgrabną dokumentację.

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.

Zdjęcie autorstwa Aedriana na Unsplash

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.

Przegląd API Reddita. Większość popularnych stron internetowych będzie miała (nieco ukrytą) stronę API.

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.

Lista rzeczy, które możemy zrobić w sposób zautomatyzowany, jeśli korzystamy z API Reddit.

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 :

Wyjaśnienie metody „list” (w zasadzie „search”) z interfejsu Google Search API.

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
Gdyby ten samochód miał interfejs API, miałby atrybut „tyre” i metodę „drive()”. Zdjęcie autorstwa Erica i Niklasa na Unsplash

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.

Zdjęcie Caspara Camille Rubina na Unsplash

Pomyśl o tym w ten sposób: kiedy sprawdzasz skrzynkę odbiorczą Gmaila na laptopie lub telefonie, Twoja przeglądarka:

  1. Dotrzyj przez Internet dogmail.com
  2. Powiedz gmail.com„Czy mogę umieścić stronę internetową pod /mail/inbox?”
  3. Następnie Gmail wysyła stronę internetową Twojej skrzynki odbiorczej z powrotem do przeglądarki, abyś mógł ją zobaczyć.
  1. Osiągnąćgmail.googleapis.com
  2. Zapytaj gmail.googleapis.como swoją skrzynkę e-mail
  3. 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 .

Fitbits to urządzenia do noszenia, które śledzą Twoje ćwiczenia, tętno i nie tylko. Zdjęcie Shane'a na Unsplash

Interfejs API Fitbit składa się z wielu elementów . Ma nawet własny interfejs API sieci Web.

Fitbit API składa się z kilku części: Device API, Settings API, Companion API i Web API.

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)
}

Ten dzieciak wie, jak czytać dokumentację API. Zdjęcie Kelly Sikkema na Unsplash

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
  • Zdjęcie Phila Hearinga na Unsplash