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.

Podobne prezentacje


Prezentacja na temat: "Piotr Czapiewski Wydział Informatyki ZUT.  REpresentational State Transfer  Praca doktorska Roya Fieldinga „Architectural Styles and the Design of."— 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 scenariuszy integracji Właściwe dla API publicznych SOAP Właściwy w zaawansowanych scenariuszach integracji w środowiskach korporacyjnych Właściwe dla API prywatnych

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 zasobów webowych @DELETE  Mapowanie parametrów żądania do parametrów @FormParam  Określenie typów MIME dla reprezentacji zasobów

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."

Podobne prezentacje


Reklamy Google