REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD...

31
REST Peter Rybár

Transcript of REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD...

Page 1: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

RESTPeter Rybár

Page 2: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

Obsah

● SOA● REST

● REST princípy● REST výhody

● pREST

● Otázky

Page 3: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy
Page 4: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

SOA – implementácie

● WEB (1990)● CORBA (1991)● XML-RPC (1998)● WS-* (1998)

● SOAP – RPC/literal

● SOAP – Document/literal (2001)

● REST (2000)

Page 5: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

SOA – Web implementácie

REST vs. WS-*

Page 6: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST vs WS-*

Page 7: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST

Page 8: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

Čo je REST ?

● REST● Representational State Transfer● Roy Fielding PhD, 2000● Architektonický štýl

● REST stojí na princípoch, ktoré umožňujú HTTP byť tak dobre škálovateľný

● REST „je Web“ – nie je tunelovaný cez Web

Page 9: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST – Princípy

● Princípy:

1. URI – identifikácia zdroj (všetko je zdroj)

2. CRUD – jednotné rozhranie pre všetky zdroje

3. Reprezentácie – rôzne podoby správy (MIME)

4. Bezstavovsť – umožňuje škálovateľnosť

5. Hypermédiá – prelinkovanie médií/reprezentácií

Page 10: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST – Princípy

● URI:

● Všetko sú zdroje ↔ ROA● Zdroje sú identifikované URI● Zdroje sú podstatné mená

http://example.net/customer

http://example.net/car

http://example.net/shopping-cart

Page 11: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST – Princípy

● CRUD:

● jednotné rozhranie pre prácu so zdrojmi– POST – Create, vytvára nový zdroj– GET – Read, bezpečná operácia– PUT – Update, idempotentná operácia– DELETE – Delete, idempotentná operácia

Page 12: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST – Princípy

● Reprezentácie:

● Jeden zdroj – viacero reprezentácií

Page 13: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy
Page 14: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST – Princípy

● Reprezentácie:

● Jeden zdroj – viacero reprezentácií– text/html, application/pdf, image/png

● Typ reprezentácie je v HTTP hlavičke– Request – Accept– Response – Content-Type

Page 15: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST – Princípy

● Bezstavovsť:

● HTTP server nepozná stav – Neexistuje HTTP Session!

● Klient udržuje stav cez linky– Funguje back button– Funguje bookmarkovanie

● Škálovateľný systém!

Page 16: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST – Princípy

● Hypermédiá:

● Reprezentácie zdrojov – hypermédiá● Hypermédiá – obsahujú linky na iné médiá● Zmena stavu klienta – cez linky v hypermédiách● Linky poskytuje server

Page 17: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

Čo nie je REST?

Page 18: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

Čo nie je REST?

● POX (Plain Old XML) bez SOAP obálky

● Tunelovanie cez HTTP GET● http://example.net/api?method=find&id=37● http://example.net/api/find/37

● Tunelovanie cez HTTP POST● POST http://example.net/api/

<method name=“find“><id>37</id>

</method>

● Ignorovanie HTTP Cache● Ignorovanie HTTP Status Codes

Page 19: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST – Výhody

● Jednoduchý vývoj => Nízka cena● Jednotné nemenné rozhranie CRUD● HTTP je všadeprítomný – povolený na FW

● Bezstavová interakcia => Škálovateľnosť

● Tenká infraštruktúra => Ľahká adopcia● Stačí Webový prehliadač● Nie je potreba kupovať drahý WS-* middleware

Page 20: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST – Výhody

● Fundamentálny prístup => SEO● Silná podpora Web 2.0 – Google, Amazon (S3) ...

Page 21: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

REST – Nástroje

● Zmena architektúry => Zmena nástrojov● Dôraz na jednoduchosť, odľahčenie● Jednoduchý stack technológií● Jedny nástroje pre vývoj:

– Web služieb– Web aplikácií

Page 22: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

pRESTPeter RybárCentaur a.s.

REST Web Framework

Page 23: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

pREST

● Web framework navrhnutý na vývoj● Webových aplikácií (AJAX, RIA)● Webových služieb

● Pre vývoj architektonickým štýlom REST● Kladie dôraz na:

● Jednoduchosť vývoja● Efektivitu vývoja● Modularitu a Extenzibilitu● Vysoký výkon

Page 24: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

pREST – dva komponenty

● Framework pozostáva z dvoch komponentov

● Serverový komponent– Kontróler pre Java servlet kontajner so

sadou rozšírení

● Klientský komponent– Javascript knižnica, UI Toolkit – je možné ju

použiť v kombinácii s ľubovolnou technológiou na strane servera.

Page 25: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

pREST – server

● Kontróler

● Základná funkčná jednotka

● Multiaction – nie komand● Akcie – mapované na

verejné metódy kontrólera

Page 26: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

pREST – server

pREST

Page 27: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

pREST – klient

● JavaScript knižnica, UI Toolkit pre tvorbu RIA

● Cieľ:● Jednoduchosť● Efektivita● Abstrakcia DOM● Reusability● Konektivita s okolím● Nezávislosť na

serverovej platforme

Využiť silu JavaScript-u ako prototypovacieho objektového jazyka

Page 28: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

pREST – spĺňa požiadavky

● Minimálna doba nábehu vývojára do vývoja● Čas rádovo v hodinách

● Horizontálny vývoj aplikácií● Vývojár ovláda iba svoju doménu

● Vyššia kvalita kódu, efektivita vývoja● Voľná väzba

● Technologická nezávislosť● Stabilita

● Platformová nezávislosť● Java 5

Page 29: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

pREST – výkon, efektivita, testy

Requests / Second Total transferred (kB) HTTP body transferred (kB)0.00

1000.00

2000.00

3000.00

4000.00

5000.00

6000.00

7000.00

8000.00

echoServletpRESTAXISAXIS SOAP

Page 30: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

pREST – výkon, efektivita, testy

Lines of Codes XML code0

2

4

6

8

10

12

14

16echo Servlet

pRESTAXIS

Page 31: REST · REST – Princípy Princípy: 1. URI – identifikácia zdroj (všetko je zdroj) 2. CRUD – jednotné rozhranie pre všetky zdroje 3. Reprezentácie – rôzne podoby správy

?

Peter Rybá[email protected]