WebAPI - Home Page of Ireneusz (Irek) SZCZEŚNIAK

Transkrypt

WebAPI - Home Page of Ireneusz (Irek) SZCZEŚNIAK
Programowanie Komponentowe
WebAPI
dr inż. Ireneusz Szcześniak
jesień 2016 roku
WebAPI - interfejs webowy
• WebAPI to interfejs aplikacji (usługi, komponentu, serwisu)
dostępnej najczęściej przez Internet, ale może to być usługa w
sieci lokalnej, albo lokalnym systemie.
• Usługę dostępną przez Internet nazywamy web service.
• WebAPI najczęściej używana w aplikacjach webowych.
• WebAPI może być zdefiniowana z użyciem:
•
•
•
•
JSON, YAML,
Google Protocol Buffers,
WSDL, SOAP, XML,
własnościowe, jak Java RMI czy .Net.
• Najpopularniejsze WebAPI: JSON w modelu REST po HTTP,
bo jest prosty i korzysta z gotowych i sprawdzonych
technologii.
• Zaleta #1: WebAPI jest całkowicie niezależne od platformy.
• Zaleta #2: pozwala na pełną separację serwera i klienta.
slajd 2
Model REST
• Representational state transfer (REST)
• REST jest modelem komunikacji klient-server.
• Protokołem warstwy aplikacji ISO/OSI dla REST jest HTTP.
• Korzysta z metod HTTP: GET, POST, PUT, DELETE, itd.
• Idea REST: aplikacja webowa przechodzi między swoimi
stanami przez wykonanie metod.
• Komunikacja bezstanowa (stateless), czyli serwer:
• wykonuje usługę tylko z użyciem danych w żądaniu przesłanym
przez klienta,
• nie pamięta historii komunikacji z klientem,
• przechowuje dane dla aplikacji webowej.
• REST = reprezentacyjna zmiana stanu
slajd 3
JSON
• JSON = JavaScrip Object Notation
• JSON to tekstowy język opisu danych, podzbiór języka
JaveScript.
• Prosty w nauczeniu się, prosty w implementacji, mniej błędów.
• Mały narzut danych organizacyjnych.
• Wspierany przez przeglądarki WWW, bo one obsługują
JavaScript.
• Posiada wiele bibliotek dla wielu języków.
• Mniejsze możliwości mogą okazać się lepsze (less is more).
• Przykład: Google Photos udostępnia WebAPI w JSONie.
slajd 4
JSON - przykład
{
NAME: " A l b e r t ␣ A t t a r d " ,
LANGUAGE : " J a v a " ,
LOCATION : " Malta " ,
EXAM:
{
SUBJECT : " Programming " ,
GRADE : 4 . 5
}
}
slajd 5
YAML
• YAML = Yaml Ain’t Markup Language
• YAML to tekstowy język opisu danych
• YAML jest rozszerzeniem języka JSON
• Tak więc narzędzie YAML wczyta dane JSON
• YAML koncentruje się na czytelności
• YAML ma kilka rozszerzeń, których brakuje w JSONie
• YAML jest używany przez projekt Swagger
slajd 6
YAML - przykład
f a k t u r a : VAT123/2016
d a t a : 2012−08−06
klient :
imie : Irek
nazwisko : Szczesniak
slajd 7
WSDL, SOAP, CORBA
• Są zbiorem spefyfikacji i implementacji dla rozproszonej
komunikacji.
• Pozwalają zdefiniować dane i operacje na danych.
• Bardzo rozbudowane narzędzia, których część funkcjonalności
jest rzadko stosowana.
• Problem: implementacje rzadko stosowanych funkcjonalności
często mają błędy.
• Moje doświadczenie: błąd w implementacji w CORBY
zatrzymał projekt na kilka tygodni.
• WSDL, SOAP i CORBA są rzadko stosowane, bo są trudne w
użyciu.
• Można się z nimi ciągle spotkać, na przykład w bazach danych
ORACLE.
slajd 8
Google Protocol Buffers
• Format przesyłu binarnych i skompresowanych wiadomości.
• Pozwala na definicję typów wiadomości, co jest kompilowane
przez dostarczony kompilator do biblioteki, którą używamy w
swoim kodzie.
• Wspiera różne języki: C++, Java, C#, Python.
• Nie pozwala na dynamiczoną modyfikację typów wiadomości,
co czyni z niego niszowy protokół komunikacji
międzyserwerowej, ale bardzo wydajny.
• Zachowuje kompatybilność między różnymi wersjami
wiadomości.
slajd 9
Java RMI
• Java Remote Method Invocation (RMI)
• Protokół komunikacji klient-server w Javie.
• Implementuje obiekty zdalne i wywołanie metod na tych
•
•
•
•
•
obiektach.
Java załatwia serializację obiektów, co pozwala RMI na
przesyłanie obiektów.
Zaawansowane, nowatorskie, łatwe i wygodne w użyciu
narzędzie. Jedna z perełek programowania.
Stosuje odpowiedzi zwrotne inicjowane przez serwer, które nie
przechodzą przez translację adresów IPv4, co przekreśla RMI w
Internecie.
Zastosowanie: skomunikacja oprogramowania w Javie w
sieciach lokalnych.
WADA: serwer i klient są ze sobą ściśle związani.
slajd 10
API Blueprint, Swagger
• Pozwalają na definiowanie WebAPI aplikacji:
• typów danych,
• możliwych operacji,
• dokumentacji,
• testów.
• Generują kod dla różnych języków.
• API Blueprint (Swagger już nie) generuje kod w C++ dla
klienta i serwera.
• Wolne oprogramowanie (licencje MIT, Apache)
• Dostarczają narzędzia do testowania WebAPI.
• API Blueprint będziemy używać na laboratorium.
slajd 11
Podsumowanie
• WebAPI jest głównie dla aplikacji webowych.
• WebAPI jest niezależnym od platformy interfejsem usługi.
• WebAPI pozwala na pełną separację klienta i serwera.
• WebAPI tworzyć najlepiej z JSON, REST i HTTP.
• Narzędzia WebAPI: API Blueprint, Swagger.
slajd 12
Dziękuję za uwagę.

Podobne dokumenty