Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Piotr Czapiewski Wydział Informatyki ZUT. REpresentational State Transfer Praca doktorska Roya Fieldinga Architectural Styles and the Design of Network-based.

Podobne prezentacje


Prezentacja na temat: "Piotr Czapiewski Wydział Informatyki ZUT. REpresentational State Transfer Praca doktorska Roya Fieldinga Architectural Styles and the Design of Network-based."— Zapis prezentacji:

1 Piotr Czapiewski Wydział Informatyki ZUT

2

3 REpresentational State Transfer Praca doktorska Roya Fieldinga Architectural Styles and the Design of Network-based Software Architectures (The REST bible) Określony poprzez zbiór ograniczeń (constraints), które należy spełnić Odpowiada zasadom leżącym u podstaw HTTP Web, HTTP, URI – jedna z możliwych realizacji

4 The Web Used Correctly Architektura systemu lub aplikacji Ściśle związana z Siecią Wykorzystująca HTTP, URI i inne standardy Webowe we właściwy sposób Inne określenia: Web-Oriented Architecture (WOA) Resource-Oriented Architecture (ROA)

5 1.Give Every Thing an ID 2.Link Things To Each Other 3.Use Standard Methods 4.Allow for Multiple Representations 5.Communicate Statelessly

6 Identyfikuj wszystko, co zasługuje na identyfikację Wysokopoziomowe zasoby, abstrakcje, fizyczne lub wirtualne obiekty, kolekcje obiektów, wyniki obliczeń, procesy Zunifikowane, globalne ID = URI Sprawdzona, zrozumiała, globalna przestrzeń nazw Możliwość przesłania linka do zasobu

7 Hypermedia as the engine of application state Hyperlinking is what makes the Web the Web Wykorzystuj hiperlinki do opisu relacji pomiędzy obiektami 23

8 Każdy zasób identyfikowany przez URI wspiera ten sam interfejs: Operacje zdefiniowane w specyfikacji HTTP Metody GET, POST, PUT, DELETE Obiektowa analogia zasobu w RESTful HTTP: class Resource { Resource(URI u); Response get(); Response post(Request r); Response put(Request r); Response delete(); }

9 Znaczenie metod HTTP GET – zwróć reprezentację zasobu POST – utwórz nowy zasób, aktualizuj lub dołącz zasób podrzędny PUT – aktualizuj lub utwórz zasób DELETE – usuń zasób Bezpieczeństwo i idempotencja: GET, PUT, DELETE

10

11

12

13 Każdy komponent rozumiejący HTTP może wchodzić w interakcję z naszą aplikacją Przeglądarka WWW curl, wget Proxy, cache, serwer HTTP Google

14 Obsługa wyniku operacji Skąd klient ma wiedzieć, jakie dane otrzyma, np. w wyniku żądania GET? Separacja koncepcji wywołania operacji i obsługi wyniku Klient obsługuje konkretny format i o taki format prosi HTTP content negotiation

15 Dobra praktyka: Udostępnienie XML i HTML Umożliwienie dostępu nie tylko konkretnej aplikacji, lecz także standardowej przeglądarce WWW Informacja dostępna dla każdego, kto potrafi korzystać z WWW Web UI = Web API Dostęp do aplikacji przez człowieka i przez maszynę

16 Komunikacja bezstanowa Stan aplikacji zapisany jako stan zasobu lub Stan aplikacji zapisany po stronie klienta Serwer nie powinien przechowywać informacji o stanie komunikacji z klientem ponad to, co dotyczy bieżącego, pojedynczego żądania

17 Pełne wykorzystanie operacji HTPP GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE Ustandaryzowane kody odpowiedzi 403 – brak dostępu 404 – zasób nie odnaleziony 500 – błąd aplikacji Negocjacja formatu zawartości Przekierowanie Caching Kompresja

18 SOAP Web Services Web tylko w nazwie – słaba integracja z HTTP, ignorowanie cech Internetu Protocol independence is a bug, not a feature Osobny interfejs dla każdej usługi, protokół zależny od aplikacji Niewielkie różnice w stosunku do starszych rozwiązań (CORBA, DCOM, RMI) – CORBA with angle brackets RESTful Web Services Jeden, wspólny dla wszystkich interfejs Mapowanie podstawowych operacji na semantykę zasobów Standardowy protokół aplikacji (HTTP) Słabsze wsparcie ze strony narzędzi

19 SOAP Web Services Przywiązanie do XML Duże narzuty w komunikacji RESTful Web Services Obsługa XML i innych formatów Lekkie komunikaty

20 SOAP REST

21 SOAP REST Jan Kowalski Jan Kowalski Jan Kowalski Jan Kowalski

22 SOAP Web Services 1 URL dla każdej usługi 1 metoda POST, wiele operacji RESTful Web Services Osobny URL dla każdego zasobu Kilka wspieranych metod (GET, PUT,POST, DELETE) Cacheable, addressable, linkable…

23 REST Remote Procedure Call SOAP Remote Procedure Call Messaging

24 Co z bezpieczeństwem, szyfrowaniem, obsługą sesji, QoS, itd.? RESTful Web Services Brak standardowych mechanizmów Możliwość budowy własnych rozwiązań SOAP Web Services W podstawowych standardach – brak Rodzina protokołów WS-*

25 REST Właściwy dla prostych, podstawowych scenariuszy integracji SOAP Właściwy w bardziej zaawansowanych scenariuszach integracji Uwzględnia wymagania QoS występujące w systemach korporacyjnych

26 Dostępne usługi Google Base, GData, Calendar, Documents, Blogger, Notebook, Picasa Amazon Simple Storage Service, Queue Service, Flexible Payment, Search Narzędzia Sun Jersey, JSR 311 IBM Abdera, Project Zero Microsoft WCF

27 Online REST Web Service Demo Baza danych SQL udostępniona jako usługa REST Pobieranie, edycja, dodawanie, usuwanie wierszy/obiektów

28

29 Java i biblioteka JAX-RS

30 JAX-RS: Java API for RESTful Web Services Część standardu Java EE 6 Standardowe API upraszczające tworzenie usług REST Oparte na adnotacjach Implementacje Jersey – implementacja referencyjna (Sun/Oracle) Apache CXF RESTEasy (JBoss)

31 Mapowanie klas/metod do @DELETE Mapowanie parametrów żądania do @FormParam Określenie typów MIME dla

32 package pc.rest; import javax.ws.rs.GET; import public class HelloRest public String hello() { return "Witamy w JAX-RS"; } package pc.rest; import javax.ws.rs.GET; import public class HelloRest public String hello() { return "Witamy w JAX-RS"; }

33 Obsługa metod HTTP: GET POST PUT public class UsersService public String getUser() { //... public String addUser() { //... public String updateUser() { //... public String deleteUser() { //... public class UsersService public String getUser() { //... public String addUser() { //... public String updateUser() { //... public String deleteUser() { //... }

34 Negocjacja zawartości Tekst, XML, JSON Nagłówek public String helloText() { return "Witamy w public String helloHtml() { return " Witamy w JAX-RS public String helloXml() { return " " + " Admin " + " Witamy w JAX-RS " + " public String helloText() { return "Witamy w public String helloHtml() { return " Witamy w JAX-RS public String helloXml() { return " " + " Admin " + " Witamy w JAX-RS " + " "; }

35 Parametry public class public String String imie) { return "Witaj w JAX-RS, " + imie; public class public String String imie) { return "Witaj w JAX-RS, " + imie; }

36

37

38 Biblioteka Pest – https://github.com/educoder/pesthttps://github.com/educoder/pest

39 L. Richardson, S. Ruby: RESTful Web Services A Brief Introduction to REST Addressing Doubts about REST REST Anti-Patterns Tutorial: Jersey + Tomcat


Pobierz ppt "Piotr Czapiewski Wydział Informatyki ZUT. REpresentational State Transfer Praca doktorska Roya Fieldinga Architectural Styles and the Design of Network-based."

Podobne prezentacje


Reklamy Google