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”) http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm  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 http://example.com/customers/1234 http://example.com/orders/2007/10/776654 http://example.com/products/4554 http://example.com/processes/salary-increase-234  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 12345 12345 http://www.acme.com/phonebook/UserDetails/12345

20  SOAP  REST 12345 12345 http://www.acme.com/phonebook/UserDetails/12345

21  SOAP  REST 12345 Jan Kowalski 911234567 jkowal@poczta.pl 12345 Jan Kowalski 911234567 jkowal@poczta.pl 12345 Jan Kowalski 911234567 jkowal@poczta.pl 12345 Jan Kowalski 911234567 jkowal@poczta.pl

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  http://www.thomas-bayer.com/rest-demo.htm http://www.thomas-bayer.com/rest-demo.htm  Baza danych SQL udostępniona jako usługa REST  Pobieranie, edycja, dodawanie, usuwanie wierszy/obiektów  http://www.thomas-bayer.com/sqlrest/ http://www.thomas-bayer.com/sqlrest/  http://www.thomas-bayer.com/sqlrest/CUSTOMER/18/ http://www.thomas-bayer.com/sqlrest/CUSTOMER/18/  http://www.thomas-bayer.com/sqlrest/INVOICE/ http://www.thomas-bayer.com/sqlrest/INVOICE/

28 http://www.thomas-bayer.com/restgate/

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  @Path  @GET, @PUT, @POST, @DELETE  Mapowanie parametrów żądania do parametrów metody  @PathParam, @QueryParam, @HeaderParam, @CookieParam, @FormParam  Określenie typów MIME dla reprezentacji zasobów  @Produces  @Consumes

32 package pc.rest; import javax.ws.rs.GET; import javax.ws.rs.Path; @Path("hello") public class HelloRest { @GET public String hello() { return "Witamy w JAX-RS"; } package pc.rest; import javax.ws.rs.GET; import javax.ws.rs.Path; @Path("hello") public class HelloRest { @GET public String hello() { return "Witamy w JAX-RS"; } http://localhost:8080/RestTest01/resources/hello

33  Obsługa metod HTTP:  GET  POST  PUT  DELETE @Path("user") public class UsersService { @GET public String getUser() { //... } @POST public String addUser() { //... } @PUT public String updateUser() { //... } @DELETE public String deleteUser() { //... } @Path("user") public class UsersService { @GET public String getUser() { //... } @POST public String addUser() { //... } @PUT public String updateUser() { //... } @DELETE public String deleteUser() { //... }

34  Negocjacja zawartości  Tekst, XML, JSON  Adnotacja @Produces  Nagłówek HTTP accept @GET @Produces("text/plain") public String helloText() { return "Witamy w JAX-RS"; } @GET @Produces("text/html") public String helloHtml() { return " Witamy w JAX-RS "; } @GET @Produces("application/xml") public String helloXml() { return " " + " Admin " + " Witamy w JAX-RS " + " "; } @GET @Produces("text/plain") public String helloText() { return "Witamy w JAX-RS"; } @GET @Produces("text/html") public String helloHtml() { return " Witamy w JAX-RS "; } @GET @Produces("application/xml") public String helloXml() { return " " + " Admin " + " Witamy w JAX-RS " + " "; }

35 http://localhost:8080/RestTest01/resources/hello/Piotr  Parametry żądania @Path("hello/{imie}") public class HelloRest { @GET @Produces("text/plain") public String helloText(@PathParam("imie") String imie) { return "Witaj w JAX-RS, " + imie; } @Path("hello/{imie}") public class HelloRest { @GET @Produces("text/plain") public String helloText(@PathParam("imie") 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  http://www.amazon.com/RESTful-Web-Services-Leonard-Richardson/dp/0596529260 http://www.amazon.com/RESTful-Web-Services-Leonard-Richardson/dp/0596529260  A Brief Introduction to REST  http://www.infoq.com/articles/rest-introduction http://www.infoq.com/articles/rest-introduction  Addressing Doubts about REST  http://www.infoq.com/articles/tilkov-rest-doubts http://www.infoq.com/articles/tilkov-rest-doubts  REST Anti-Patterns  http://www.infoq.com/articles/rest-anti-patterns http://www.infoq.com/articles/rest-anti-patterns  Tutorial: Jersey + Tomcat  http://www.suryasuravarapu.com/2009/02/rest-jersey-configuration-on-tomcat.html http://www.suryasuravarapu.com/2009/02/rest-jersey-configuration-on-tomcat.html  http://www.suryasuravarapu.com/2009/03/rest-crud-with-jax-rs-jersey.html http://www.suryasuravarapu.com/2009/03/rest-crud-with-jax-rs-jersey.html


Pobierz ppt "Piotr Czapiewski Wydział Informatyki ZUT.  REpresentational State Transfer  Praca doktorska Roya Fieldinga „Architectural Styles and the Design of."

Podobne prezentacje


Reklamy Google