W celu świadczenia usług na najwyższym poziomie stosujemy pliki cookies. Korzystanie z naszej witryny oznacza, że będą one zamieszczane w Państwa urządzeniu. W każdym momencie można dokonać zmiany ustawień Państwa przeglądarki. Zobacz politykę cookies.
Powrót

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

http://samples.openweathermap.org/data/2.5/find?q=London&units=metric&appid=b6907d289e10d714a6e88b30761fae22

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?
{"register":{"columns":[{"header":"Pozycja","value":"134","registerId":20735334,"dictionaryValues":[],"nestedValues":[],"showInContent":false,"positionSelector":".article-area__article h2","insertMethod":"after"},{"header":"Obszar publikacji","value":"","registerId":20735334,"dictionaryValues":[{"id":"aspekty techniczne/technologie IT","value":"aspekty techniczne/technologie IT"},{"id":"rozwiązania IT","value":"rozwiązania IT"}],"nestedValues":[],"showInContent":false,"positionSelector":".article-area__article h2","insertMethod":"after"}]}}