Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Integracja aplikacji Wykład 4
Piotr Czapiewski Wydział Informatyki ZUT Integracja aplikacji Wykład 4
2
RESTful Web Services
3
REST – styl architektoniczny
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
RESTful HTTP „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
REST – podstawowe zasady
Give Every „Thing” an ID Link Things To Each Other Use Standard Methods Allow for Multiple „Representations” Communicate Statelessly
6
1. Give Every „Thing” an ID
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
2. Link Things To Each Other
„Hypermedia as the engine of application state” „Hyperlinking is what makes the Web the Web” Wykorzystuj hiperlinki do opisu relacji pomiędzy obiektami <order self=' > <amount>23</amount> <product ref=' /> <customer ref=' /> </order>
8
3. Use Standard Methods 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
3. Use Standard Methods 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 HTTP CRUD POST Create, Update GET Read PUT Update, Create DELETE Delete
10
3. Use Standard Methods
11
3. Use Standard Methods
12
3. Use Standard Methods
13
3. Use Standard Methods 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
4. Allow for Multiple Representations
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
4. Allow for Multiple Representations
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
5. Communicate Statelessly
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
REST a komponenty HTTP Pełne wykorzystanie operacji HTPP
Negocjacja formatu zawartości GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE Przekierowanie Caching Kompresja Ustandaryzowane kody odpowiedzi 403 – brak dostępu 404 – zasób nie odnaleziony 500 – błąd aplikacji
18
REST vs. SOAP SOAP Web Services RESTful 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
REST vs. SOAP SOAP Web Services RESTful Web Services
Przywiązanie do XML Duże narzuty w komunikacji RESTful Web Services Obsługa XML i innych formatów Lekkie komunikaty <?xml version="1.0"?> <soap:Envelope xmlns:soap=" soap:encodingStyle=" <soap:body pb=" <pb:GetUserDetails> <pb:UserID>12345</pb:UserID> </pb:GetUserDetails> </soap:Body> </soap:Envelope>
20
REST vs. SOAP – przykład żądania
<?xml version="1.0"?> <soap:Envelope xmlns:soap=" soap:encodingStyle=" <soap:body pb=" <pb:GetUserDetails> <pb:UserID>12345</pb:UserID> </pb:GetUserDetails> </soap:Body> </soap:Envelope>
21
REST vs. SOAP – przykład odpowiedzi
<?xml version="1.0"?> <soap:Envelope xmlns:soap=" soap:encodingStyle=" <soap:body pb=" <pb:GetUserDetailsResponse> <pb:User> <pb:UserID>12345</pb:UserId> <pb:Name>Jan Kowalski</pb:Name> <pb:Phone> </pb:Name> </pb:User> </pb:GetUserDetailsResponse> </soap:Body> </soap:Envelope> <?xml version="1.0"?> <User> <UserID>12345</UserId> <Name>Jan Kowalski</Name> <Phone> </Name> </User>
22
REST vs. SOAP SOAP Web Services RESTful 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 i SOAP a style integracji
Remote Procedure Call SOAP Messaging
24
REST vs. SOAP 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 vs. SOAP 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
RESTful Web Services – przykłady
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
RESTful Web Service – przykłady
Online REST Web Service Demo Baza danych SQL udostępniona jako usługa REST Pobieranie, edycja, dodawanie, usuwanie wierszy/obiektów
28
RESTGate – webowy klient usług REST
29
Implementacja REST Java i biblioteka JAX-RS
30
REST i Java – JAX-RS 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
Adnotacje JAX-RS Mapowanie klas/metod do zasobów webowych
@Path Mapowanie parametrów żądania do parametrów metody @FormParam Określenie typów MIME dla reprezentacji zasobów @Produces @Consumes
32
Serwer usługi REST 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"; }
33
Serwer usługi REST w JAX-RS
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() {
34
Serwer usługi REST w JAX-RS
Negocjacja zawartości Tekst, XML, JSON Nagłówek HTTP accept @GET @Produces("text/plain") public String helloText() { return "Witamy w JAX-RS"; } @Produces("text/html") public String helloHtml() { return "<h1>Witamy w JAX-RS</h1>"; @Produces("application/xml") public String helloXml() { return "<komunikat>" + "<nadawca>Admin</nadawca>" + "<tresc>Witamy w JAX-RS</tresc>" + "</komunikat>";
35
Serwer usługi REST w JAX-RS
Parametry żądania @Path("hello/{imie}") public class HelloRest { @GET @Produces("text/plain") public String String imie) { return "Witaj w JAX-RS, " + imie; }
36
Klient Rest – Java
37
Klient Rest – Java
38
Klient Rest – PHP Biblioteka Pest –
39
Literatura L. Richardson, S. Ruby: RESTful Web Services
A Brief Introduction to REST Addressing Doubts about REST REST Anti-Patterns Tutorial: Jersey + Tomcat
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.