WebAPI

API webowe, API internetowe, interfejsy webowe (ang. Web Application Programming Interfaces, WebAPI) – rodzaj sieciowego interfejsu programowania aplikacji (ang. network-based API), w którym wykorzystuje się architekturę i protokoły sieci Web (w szczególności protokół HTTP) do komunikacji między aplikacjami znajdującymi się na oddzielnych urządzeniach w sieci.

API webowe może przyjmować różne formy, takie jak wywoływanie zdalnych procedur (wraz ze zwrotnym przesyłaniem wyników ich pracy), transfer bieżącego stanu zasobów reprezentowanych w sieci i inne.

Cechą odróżniającą API webowe od tradycyjnej interakcji w sieci WWW jest to, że użytkownikiem interfejsów nie jest bezpośrednio korzystający w przeglądarki internetowej człowiek, a aplikacja. Zbiór usług WebAPI pozwala tworzyć bardziej złożone programy, w których zasób zdalny (obecny na serwerze) jest dostępny z podobną łatwością jak zasób lokalny[1].

Historia

Technikami, które poprzedziły rozwój API webowych jest opracowany w roku 1988 system RPC (ang. remote procedure call) oraz zaproponowany w latach '90, system CORBA. Model RPC pozwalał na wywoływanie procedur zdalnych, tak jakby to były elementy biblioteki programistycznej dostępnej lokalnie. CORBA rozwinął RPC o takie elementy jak obiektową realizację interfejsu programistycznego API, oraz możliwość łączenia systemów działających pod kontrolą różnych systemów operacyjnych i pisanych w różnych językach (dzięki abstrakcyjnemu interfejsowi zdefiniowanemu w języku IDL). W roku 1999 przedstawiono dwa systemy, które realizowały podobne funkcje, lecz z użyciem technik Webu: XML-RPC oraz protokół SOAP, które – zwłaszcza SOAP i powiązane techniki – rozpowszechniły się pod angielską nazwą Web Services. Protokoły Web Services uchodziły za dosyć ciężkie i wymagające w implementacji, stąd zaproponowano szereg podejść do realizacji usług sieciowych, które pozwalały na prostą interakcję między klientem a serwerem z użyciem identyfikatorów URI i podstawowych funkcji protokołu HTTP. Około roku 2000 został zaproponowany styl architektury oprogramowania REST, i to on jest obecnie najpopularniejszym sposobem realizacji API webowych[2].

Zastosowania

Obecnie API webowe stosowane są w wielu dziedzinach i do różnych celów. Przykładowo, serwis ProgrammableWeb(inne języki) (popularny portal webowy zbierający publiczne API webowe[3]) wyróżnia ponad 400 kategorii API[4], w tym m.in.:

  • API związane z mapami (ang. mapping); liczba API powiązanych z tą kategorią: 5661,
  • API związane z serwisami społecznościowymi (ang. social); 4796 API,
  • API związane z finansowymi (ang. financial); 4187 API,
  • API związane z handlem elektronicznym (ang. eCommerce); 4160 API,
  • API związane z usługami mobilnymi (ang. mobile); 3932 API,
  • API związane z wymianą komunikatów (ang. messaging); 3800 API,
  • API związane z usługami chmurowymi (ang. cloud); 3708 API.

Do przykładów popularnych API webowych należą m.in.:

Realizacja techniczna

W realizacji API webowych najczęściej spotykanym stylem architektury oprogramowania jest REST (ang. representational state transfer), gdzie wywołanie usługi interfejsu (wraz z parametrami) jest zakodowane w formie URI, a wynik działania jest zakodowany z użyciem formatu JSON lub XML (dopuszczalne są też inne formy - w tym czysty tekst). Takie rodzaje API Webowych znane są pod nazwą RESTful APIs[5].

Definicja API webowego może być stosunkowo prosta (API, by być w pełni funkcjonalne, może się składać nawet z jednego typu komunikatu) i, wraz ze stosowaną powszechnie bezstanowością serwisu, pozwala na tworzenie aplikacji klienta małym nakładem pracy. Możliwe jest np. wywołanie serwisu webowego z użyciem konsolowej komendy curl, a integracja z aplikacjami może być przeprowadzona bez dodatkowych bibliotek.

Istnieją powody, dla których użycie API powinno być bardziej złożone[6] i w wielu przypadkach można się spotkać z API webowymi wymagających kilkufazowej interakcji.

Użycie API publicznych, takich jak wspomniane wyżej API Twittera, wymaga najczęściej rejestracji użytkownika. Podczas rejestracji użytkownikowi przekazywany jest specjalny identyfikator (zwany kluczem), który musi być użyty w trakcie korzystania z API; w przeciwnym razie serwis nie zadziała.

Część publicznych API webowych wymaga opłat.

Przypisy

  1. Daniel Jacobson, Dan Woods, Greg Brail: Interfejs API: Strategia programisty. Gliwice: Helion, 2015. (pol.).
  2. Jacek Kopecký, Paul Fremantle, Rich Boakes. A history and future of Web APIs. „Information Technology”. 56 (3), s. 90-97, 2013. Walter de Gruyter. DOI: 10.1515/itit-2013-1035. ISSN 1611-2776. [dostęp 2019-06-07]. (ang.). 
  3. Strona domowa projektu ProgrammableWeb
  4. APIs by Category [online], ProgrammableWeb [dostęp 2019-06-15]  (ang.).
  5. L. Richardson, M. Amundsen, S. Ruby: RESTful Web APIs. O’Reilly Media, 2013. (ang.).
  6. Tiago Espinha, Andy Zaidman, Hans-Gerhard Gross. Web API growing pains: Loosely coupled yet strongly tied. „Journal of Systems and Software”. 100, s. 27-43, 2015. DOI: 10.1016/j.jss.2014.10.014. (ang.).