Standard API dla udostępniania danych
Co to jest API
Interfejs Programowania Aplikacji (API, od ang. Application Programming Interface), w najprostszej formie jest fragmentem kodu w wybranym języku programowania, który pozwala na komunikację pomiędzy dwoma aplikacjami.
Zgodnie z definicją API przyjętą na potrzeby dokumentu OD.API – standardy interfejsu programistycznego aplikacji - Minimalne rekomendowane zalecenia dotyczące interfejsu programistycznego aplikacji dostępu do baz danych przechowujących zasoby publiczne (OD.API)[1] jest przede wszystkim specyfikacją wytycznych jak powinna przebiegać interakcja między komponentami programowymi. Implementacja API jest zestawem procedur, protokołów i rozwiązań informatycznych do budowy aplikacji komputerowych. Dobre API ułatwia budowę oprogramowania sprowadzając ją do łączenia przez programistę bloków elementów w ustalonej konwencji.
Przykładem API jest kod podany przez serwisy pogodowe czy popularne aplikacje mapowe na smartfony, który tworzy możliwości pobrania danych do własnych aplikacji i serwisów internetowych.
Przykład API – dane pogodowe dla Londynu
Zapytanie
Odpowiedź
{"message":"accurate","cod":"200","count":1,"list":[{"id":2643743,"name":"London","coord":{"lat":51.5085,"lon":0.1258},"main":{"temp":7,"pressure":1012,"humidity":81,"temp_min":5,"temp_max":8},"dt":1485791400,"wind":{"speed":4.6,"deg":90},"sys":{"country":"GB"},"rain":null,"snow":null,"clouds":{"all":90},"weather":[{"id":701,"main":"Mist","description":"mist","icon":"50d"},{"id":300,"main":"Drizzle","description":"light intensity drizzle","icon":"09d"}]}]}
Opracowane na podstawie: https://openweathermap.org/
API może być dostępne nie tylko dla użytkowników zorganizowanych, instytucji i dużych wytwórców oprogramowania, ale również indywidualnych i prywatnych.
Coraz więcej systemów informatycznych wdrażanych w administracji publicznej uwzględnia API jako formę komunikacji z innymi systemami, zarówno na potrzeby wymiany danych z innymi systemami w administracji, jak i na zewnątrz dla obywateli i przedsiębiorców.
Zalety i wady stosowania API
Zalety uwzględniania API podczas budowy systemów informatycznych i aplikacji:
- możliwość interakcji z innymi systemami bez uwzględniania ich komplementarności i zgodności na etapie projektowania,
- brak konieczności tworzenia wbudowanych mechanizmów dedykowanych konkretnym systemom i aplikacjom komputerowym,
- niskie koszty budowy i utrzymania,
- zwiększenie bezpieczeństwa systemu poprzez ograniczenie interakcji z innymi systemami i tworzenie wbudowanych mechanizmów poprzez udostępnienie łatwej do kontrolowania usługi na zewnątrz,
- elastyczność modyfikacji po stronie wystawcy API,
- skalowalność rozwiązania,
- łatwe rozszerzenie zakresu udostępnianych danych.
Wady
- zmiany w API po stronie wystawcy wymagają zmian po stronie odbiorcy, które nie zawsze są dostatecznie wcześnie sygnalizowane i zauważane przez użytkowników – odbiorców danych,
- ryzyko niezidentyfikowanego obciążania zasobów głównego systemu i ataki zewnętrzne w przypadku niedostatecznej identyfikacji i autoryzacji użytkownika lub braku limitów dla wymienianych danych.
Standardy API
Podobnie jak w powyższym przykładzie, aby można było mówić o komunikacji dwóch systemów, po stronie wystawcy i odbiorcy API muszą być uzgodnione schematy i procedury interakcji, aby wymiana danych doszła do skutku. Zapytania kierowane do serwerów dostawcy danych mają swoją strukturę i określoną składnię. Czasami w wyniku przeprowadzonej analizy najczęściej wyszukiwanych zbiorów danych lub informacji wykorzystywanych przez inne instytucje lub firmy zapytanie do bazy jest z góry zdefiniowane i w serwisie www prezentowany jest wynik do pobrania w odpowiednim, popularnym formacie, np. Rejestr Podmiotów Wykonujących Działalność Leczniczą, dane dotyczące liczby składanych deklaracji w podziale na elektroniczne i papierowe, itd. Dostęp do wybranych zasobów publicznych jest możliwy za pośrednictwem portalu https://danepubliczne.gov.pl/.
W celu uzgodnienia konkretnych sposobów pozyskiwania danych wytwórcy oprogramowania udostępniają procedury i standardy API. Standardy mogą dotyczyć aspektów technicznych, konkretnego interfejsu programistycznego aplikacji, bezpieczeństwa i regulacji prawnych. Dostęp do standardu i samego systemu często zależy od charakteru samej bazy. Baza może być prywatna, publiczna, a dostęp do niej odpłatny lub nieodpłatny.
Szczególnym przykładem wykorzystania API i definiowania standardu jest Program Otwierania Danych Publicznych (PODP)[2], którego celem jest poprawa jakości i zwiększenie liczby danych dostępnych na portalu danepubliczne.gov.pl.
Dokument OD.API, przygotowany przez Ministerstwo Cyfryzacji w ramach projektu „Otwarte dane – dostęp, standard, edukacja”[3], realizowanego z PO PC, określa minimalne rekomendowane zalecenia dotyczące interfejsu programistycznego aplikacji dostępu do baz danych, które przechowują dane publiczne. Został stworzony z myślą o administracji publicznej, aby udostępniała swoje dane przez API według jednolitego standardu. Udostępnienie danych przez administrację publiczną zgodnie ze standardem ułatwi wykorzystanie danych publicznych i łączenie ich z różnych źródeł, a w konsekwencji tworzenie innowacyjnych dóbr, usług i produktów przez przedsiębiorców, organizacje pozarządowe czy programistów.
Ww. standard wskazuje minimalne zalecenia w następujących obszarach:
- kategorie obecnych i potencjalnych odbiorców danych wykorzystujących API,
- architektura usług sieciowych REST[4],
- reguły nazewnictwa zasobów oraz parametry usługi API,
- opis składni oraz elementów URI[5],
- opis dostępu do zasobów powiązanych z URI,
- manipulowanie zasobami (filtrowanie, sortowanie, stronicowanie),
- metadane,
- mechanizm linków do nawigacji,
- wersjonowanie,
- obsługa zdarzeń http,
- uwierzytelnianie i autoryzacja
- określenie reguł wprowadzania limitów danych per IP,
- opis standardu dokumentacji usługi API.
Określone standardy API to w zasadzie zbiór dobrych praktyk w określonych obszarach bazujących na standardach tworzenia i obsługi baz danych, sieci komputerowych, języków programowania i przyjętych formatach plików. Inne standardy techniczne i standardy bezpieczeństwa będą obowiązywały firmy komercyjne i jednostki administracji publicznej udostępniające proste dane wynikowe, najczęściej służące do analiz statystycznych a inne skomplikowane systemy informatyczne wymieniające dane pomiędzy sobą, przy zapewnieniu adekwatnego poziomu bezpieczeństwa. Niezależnie od tego API jest niezwykle przydatnym i efektywnym mechanizmem elektronicznej wymiany danych, szczególnie w administracji publicznej, który umożliwia ponowne ich wykorzystanie i rozwój usług zewnętrznych.
[1] https://www.danepubliczne.gov.pl/article/standard-interfejsu-programistycznego-aplikacji-api
[2] Przyjęty uchwałą nr 107/2016 Rady Ministrów z dnia 20 września 2016 r. w sprawie ustanowienia „Programu otwierania danych publicznych”.
[3] https://www.gov.pl/cyfryzacja/otwarte-dane-dostep-standard-edukacja2
[4] REST – (ang. Representational State Transfer) jest popularnym stylem architektonicznym stosowanym w celu budowy usług wymiany danych w sieci Internet takich jak API.
[5] URI – (ang. Uniform Resource Identifier) jest standardem internetowym umożliwiającym łatwą identyfikację zasobów w sieci, np. adres strony internetowej.
Autor: Marcin Rogalski
Artykuły powiązane:
Materiały
Czy w projektach realizowanych w POPC trzeba stosować API?Co to jest klucz API?
W jaki sposób opisać formę udostępniania zasobów naukowych?