Co oznacza skrót API? Czym jest protokół HTTP? Jakie zasady określają styl REST?
Application Programming Interface, czyli interfejs programistyczny aplikacji jest to zbiór zasad opisujących możliwe sposoby komunikacji z daną aplikacją. Termin ten odnosi się zazwyczaj do komunikacji na linii aplikacja-aplikacja. W przypadku komunikacji użytkownik-aplikacja mówi się raczej o UI (User Interface). Program implementujący dane API powinien być w stanie przyjmować żądania i zwracać odpowiedzi w zgodne ze zdefiniowanymi zasadami. Akcje wykonywane przez program między otrzymaniem żądania a zwróceniem odpowiedzi nie są opisywane przez API i powinny być nieistotne dla konsumenta.
Określenie API jest terminem szerokim i może być używane do opisywania różnych przypadków np.
Szczególnym przypadkiem zdalnej komunikacji między aplikacjami jest komunikacja za pośrednictwem sieci. Można wtedy mówić o Web API. Popularnym protokołem w komunikacji sieciowej jest HTTP, czyli Hypertext Transfer Protocol. Definiuje on zbiór zasad dotyczących komunikacji za pośrednictwem sieci. Protokół HTTP określa sposób przesyłania żądań i odpowiedzi.
Wśród zdefiniowanych w ramach protokołu HTTP metod żądań znajdują się czasowniki:
W zależności od wybranej metody żądanie może zawierać dodatkowe informacje w przesyłanym ciele (body), to samo tyczy się odpowiedzi. Metody wykorzystywane w celu pobierania informacji (GET, HEAD, POST) mogą pozwalać na wykorzystywanie mechanizmu cache, umożliwiającego przechowywane po stronie klienta odpowiedzi i używanie ich w celu obsługi przyszłych żądań bez udziału serwera API.
Dodatkowo metody HTTP można rozróżnić ze względu na bycie bezpiecznymi i idempotentnymi.
Metody bezpieczne protokołu HTTP to takie, które z założenia nie powinny wprowadzać zmian na serwerze. Odnosi się to głównie do modyfikowania stanu zasobu, do którego odwołuje się dana metoda. Akcje takie jak na przykład tworzenie logów nie oznaczają, że zapytanie nie jest bezpieczne. Należy jednak pamiętać, że jest to jedynie zalecenie, które powinno być zaimplementowane po stronie serwera, a nie cecha protokołu HTTP. Ostatecznie nic nie stoi na przeszkodzie temu, aby po stronie serwera obsługa żądania typu GET usuwała zasób, do którego się odwołuje.
Metody idempotentne to takie, w przypadku których wielokrotne wywołanie powinno przynieść taki sam efekt jak wywołanie jednokrotne. Wśród metod idempotentnych znajdują się metody bezpieczne, PUT (modyfikacja zasobu) i DELETE (usunięcie zasobu). Podobnie ja w przypadku metod bezpiecznych implementacja takiego zachowania leży po stronie aplikacji, a nie samego protokołu HTTP. Nie można z góry zakładać tej cechy danego zapytania jedynie na podstawie metody HTTP.
Kody odpowiedzi protokołu http dzielą się na 5 grup:
REST, czyli REpresentational State Transfer, to styl architektury systemów rozproszonych. Rest definiuje zbiór zasad mówiących o tym, jak powinno projektować się API. O API spełniających te zasady można powiedzieć, że są RESTful. Zasady stylu REST to:
Uniwersalność interfejsu. Ta zasada skupia się na wprowadzaniu standardów zapewniających jednolitość sposobów komunikacji. Aplikacje spełniające tę zasadę stają się bardziej re-używalnymi blokami, które łatwiej podmienić. Uzyskanie tego możliwe jest przez stosowanie czterech mniejszych zasad:
Zasady opisane w ramach stylu REST, jak i cześć wytycznych dotyczących protokołu HTTP są jedynie wskazówkami pozwalającymi budować przejrzyste i uniwersalne interfejsy komunikacji między aplikacjami. Należy pamiętać o tym zarówno podczas tworzenia aplikacji konsumującej, jak i publikującej API. Nie można ich brać za pewnik ani nie trzeba przestrzegać za wszelką cenę. Stosowanie się do ogólna przyjętych zasad może potencjalnie przynieść znaczące korzyści, jednak czasami nagięcie zasad w celu lepszego obsłużenia konkretnych przypadków może być w pełni uzasadnione. Oprócz przedstawiony w tym wpisie API REST istnieją inne popularne sposoby komunikacji między aplikacjami takie jak na przykład SOAP, czy GraphQL.
Źródła: