Web 2016 (11/13) Servicii Web. Paradigma REST

126
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco/ Tehnologii Web servicii Web (II) dezvoltarea de aplicații Web prin REST

Transcript of Web 2016 (11/13) Servicii Web. Paradigma REST

Page 1: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/Tehnologii Web

servicii Web (II)

⊷dezvoltarea de aplicații Web prin REST

Page 2: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

„Concizia este sora talentului.”

Anton Cehov

Page 3: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

Există o modalitate de creare/invocarea serviciilor Web fără a recurge la SOAP?

Page 4: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: representational state transfer

Stil arhitectural de dezvoltare a aplicațiilor Webcu focalizare asupra reprezentării datelor

teză de doctorat – Roy Fielding (2000)

Page 5: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

Page 6: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

resursă Web

utilizator având cont în cadrul unui sistem, blog-ul unei persoane, fotografie, flux de știri, program,…

Page 7: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

reprezentare pe baza unui format de date

textual sau binar

exemple tipice: HTML, JSON, PNG, SVG, PDF etc.

Page 8: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

reprezentare pe baza unui format de date

formatul reprezentării e desemnat de tipuri MIMEtext/html, text/xml, application/json, image/png

detalii în N.Freed et al., Media Types, 2016http://www.iana.org/assignments/media-types/media-types.xhtml

Page 9: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

reprezentările aceleași resurse– desemnate de un URI unic – pot fi multiple

reprezentare1

(HTML)reprezentare2

(Atom)

resursa

URI

Page 10: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Rezultatul unei procesări conduce la obținereaunei reprezentări a unei resurse

fiecare reprezentare a unei resurse are asociat un URL

reprezentare1

(HTML)reprezentare2

(Atom)

resursa

URI

URLURL

Page 11: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Clienții (e.g., navigatoare Web, roboți, player-e etc.) interacționează cu reprezentările resurselor via verbe„accesează”: GET, „modifică”: POST, „șterge”: DELETE,…

reprezentare1

(HTML)reprezentare2

(Atom)

resursa

URI

URLURL

GET POST GET DELETE

Page 12: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Verbele (acțiunile) sunt stipulate de protocolul HTTP

GET

scop: accesarea (citirea) unei reprezentări de resursă

nu conduce la modificarea stării serverului (safe)

idempotentă – cereri identice vor conduce la oferireaaceluiași răspuns (aceeași reprezentare)

Page 13: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Verbele (acțiunile) sunt stipulate de protocolul HTTP

HEAD

similară cu GET, dar furnizează doar meta-date(nu oferă reprezentarea propriu-zisă)

e.g., ultima actualizare, lungimea conținutului,…

Page 14: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Verbele (acțiunile) sunt stipulate de protocolul HTTP

PUT

actualizează o reprezentare de resursă saueventual creează o resursă la nivel de server Web

uzual, returnează un identificator (URI) al resursei

nu e considerată safe, dar este idempotentă

Page 15: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Verbele (acțiunile) sunt stipulate de protocolul HTTP

PATCH

actualizarea parțială a unei reprezentări de resursă(PUT nu oferă o asemenea facilitate)

nu este safe și nici idempotentă

Page 16: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Verbele (acțiunile) sunt stipulate de protocolul HTTP

POST

creează o resursă (uzual, subordonată altei resurse),eventual realizându-se procesări suplimentare

nu este nici safe, nici idempotentă

clientul nu cunoaște a-prioricare va fi URI-ul resursei ce va fi create

Page 17: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Verbele (acțiunile) sunt stipulate de protocolul HTTP

DELETE

șterge (elimină) o resursă desemnată de un URI

este idempotentă

Page 18: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Verbele (acțiunile) sunt stipulate de protocolul HTTP

OPTIONS

permite clientului să determine diverse cerințe privitoare la o resursă (e.g., dacă o resursă poate fi ștearsă)

sau facilitățile expuse de un server (de exemplu, suportul oferit de un proxy)

Page 19: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Orice accesare a unei reprezentăriplasează aplicația – ori clientul Web – într-o starece va fi schimbată în urma unui transfer de date

(accesarea altei reprezentări)

Page 20: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

resursa1

reprezentare1

(HTML)

http://blog.info/

resursa2

reprezentare2

(HTML)

http://blog.info/mesaj

resursa3

reprezentare3

(HTML)

http://blog.info/mesaj/edit

resursa4

reprezentare4

(Atom)

http://blog.info/stiri.xml

GET

GET

POST

Page 21: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

resursa1

reprezentare1

(HTML)

http://blog.info/

resursa2

reprezentare2

(HTML)

http://blog.info/mesaj

resursa3

reprezentare3

(HTML)

http://blog.info/mesaj/edit

resursa4

reprezentare4

(Atom)

http://blog.info/stiri.xml

GET

GET

POST

HATEOAS (Hypermedia As The Engine Of Application State)

avansat

Page 22: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Transferul se realizează prin protocolul HTTP

Reprezentarea este modelată conform unui format– e.g., JSON sau XML – și indicată prin tipuri MIME

Adresabilitatea se rezolvă via URI

Page 23: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Aplicațiile care invocă funcționalități (servicii)consumă reprezentări de resurse – în stilul pull

Page 24: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Fiecare cerere este considerată independentă,fără a se lua în considerație contextul

stateless server

Page 25: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Reprezentările de resurse pot fi stocate temporar

caching

Page 26: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

sta

tele

ss s

erve

r

client

cache

client

cache

adaptare după B. Mulloy (2012)

avansat

Page 27: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

sta

tele

ss s

erve

r

client

cache

client

cache

adaptare după B. Mulloy (2012)

fiecare cerere trebuie să conțină toateinformațiile necesare procesării

avansat

Page 28: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

sta

tele

ss s

erve

r

client

cache

client

cache

adaptare după B. Mulloy (2012)

contextul activitățilornu-i stocat de server

avansat

Page 29: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

sta

tele

ss s

erve

r

client

cache

client

cache

adaptare după B. Mulloy (2012)

clientul are dreptul săreutilizeze datele recepționate

avansat

Page 30: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Aplicația Web dezvoltată va fi stratificată

layered system

avansat

Page 31: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

client

state-less

server

state-less

server

state-less

server

loadbalan

cergatewayfire-

wall

adaptare după B. Mulloy (2012)

avansat

Page 32: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

client

state-less

server

state-less

server

state-less

server

loadbalan

cergatewayfire-

wall

adaptare după B. Mulloy (2012)

fiecare strat oferăservicii stratelor

vecine

avansat

Page 33: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

client

state-less

server

state-less

server

state-less

server

loadbalan

cergatewayfire-

wall

adaptare după B. Mulloy (2012)

un strat nu poate„vedea” strateneînvecinate

avansat

Page 34: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

client

state-less

server

state-less

server

state-less

server

loadbalan

cergatewayfire-

wall

adaptare după B. Mulloy (2012)

stratele pot încapsula(„ascunde”) sisteme

tradiționale – blackbox

avansat

Page 35: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

client

state-less

server

state-less

server

state-less

server

loadbalan

cergatewayfire-

wall

adaptare după B. Mulloy (2012)

are rol în asigurareaperformanței/

fiabilității

avansat

Page 36: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: exemplu

Implementarea unui magazin on-lineoferind dulciuri

Page 37: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: exemplu

Implementarea unui magazin on-lineoferind dulciuri

stilul „clasic” SOAP – conform RPC

operații privind produsele:furnizeazaSortim(), adaugaSortim(), listeazaSortim(), cautaSortim()

operații ce vizează managementul utilizatorilor:furnizeazaUtiliz(), adaugaUtiliz(), stergeUtiliz(), cautaUtiliz(),…

Page 38: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: exemplu

Implementarea unui magazin on-lineoferind dulciuri

stilul „nou” REST

tipuri de resurse (Sortim + Utiliz), identificate unic de URIhttp://www.dulciuri.biz/sortim/portocala

Page 39: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: exemplu

Implementarea unui magazin on-lineoferind dulciuri

stilul „nou” REST

tipuri de resurse (Sortim + Utiliz), identificate unic de URIhttp://www.dulciuri.biz/sortim/portocala/albastra

URI intuitiv – “user/SEO friendly”

Page 40: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: exemplu

Serviciu pentru managementul adreselor Web favorite(bookmark-uri), cu posibilitatea atașării de termeni de conținut (tag-uri) și comentarii

social bookmarking

abordări similare: Delicious, Digg, Pocket, Reddit etc.

Page 41: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: exemplu

Serviciu pentru managementul adreselor Web favorite(bookmark-uri), cu posibilitatea atașării de termeni de conținut (tag-uri) și comentarii

funcționalitate de bază: listarea tuturor bookmark-urilor(eventual, filtrate după diverse criterii)

managementul bookmark-urilor:adăugare, editare, ștergere

Page 42: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: exempluResursa URL Metoda Reprezentare

Bookmark /bookmarks/{md5} GET application/bookmark+xml

Bookmark /bookmarks/{md5} PUT application/bookmark+xml

Bookmark /bookmarks/{md5} DELETE

Lista de adrese

/bookmarks GET application/atom+xml

Lista de utilizatori

/users GET application/atom+xml

Lista detag-uri

/tags GET application/atom+xml

Paginaprincipală

/ GET application/xml

Page 43: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

GET /bookmarks200 OKContent-type: application/atom+xml

<?xml version="1.0"?><feed xmlns="http://www.w3.org/2005/Atom">

<title>Bookmarks</title><entry>

<title>O resursă interesantă</title><link href="/bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf"/>

<summary>http://undeva.info/o-resursa-interesanta

</summary></entry>

<!-- eventual, alte elemente <entry>… --></feed>

răspuns XML (Atom)oferit de serviciu

obținereabookmark-urilor

digest (MD5, SHA1,…)

Page 44: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

GET /bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf 200 OKContent-type: application/bookmark+xml

<bookmark><title>O resursă interesantă</title><url>http://undeva.info/o-resursa-interesanta</url><user href="/users/tux">tux</user><tags>

<tag href="/tags/interesting">interesting</tag><tag href="/tags/penguin">penguin</tag>

</tags></bookmark>

preluarea unui bookmark:răspunsul XML oferit de serviciul Web

Page 45: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

POST /bookmarksContent-type: application/bookmark+xml…201 CreatedLocation: /bookmarks/a211528fb5108cddaa4b0d3aeccdbdcf

PUT /bookmarks/a211528fb5108cddaa4b0d3aeccdbdcfContent-type: application/bookmark+xml…200 OK

crearea unuibookmark

actualizareaunui bookmark

Page 46: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Resursele se denumesc folosind URI-uri (URL-uri)

Reprezentările sunt interconectate prin URL-uri

Pot exista intermediari (proxy, cache, porți)între clienți și resurseperformanță, securitate,...

avansat

Page 47: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

Resursele se denumesc folosind URI-uri (URL-uri)

Reprezentările sunt interconectate prin URL-uri

Pot exista intermediari (proxy, cache, porți)între clienți și resurseperformanță, securitate,...

Transferul de date poate fi și asincron – stil Ajax/Comet

avansat

vezi cursul viitor

Page 48: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest

O resursă poate avea asociate reprezentărice pot fi accesate/alterate via operații HTTP

operații CRUD – Create, Retrieve, Update, Delete

avansat

Page 49: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

Putem adopta o metodologie vizânddezvoltarea de servicii Web via REST?

Page 50: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: metodologie

Divizarea în resurse a setului de dateale problemei

clase tipice de resurse:Utilizatori

Documente – alternative: Fotografii, Produse, Software,…Metadate – e.g., Comentarii, Formate, Locatii, Platforme etc.

avansat

Page 51: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: metodologie

„Numirea” prin URI a fiecărei resurse

exemplificări:

http://aplicatie.info/Utilizatori/tux

http://aplicatie.info/Documente/pinguini-cu-mere-albastre

avansat

Page 52: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: metodologie

„Numirea” prin URI a fiecărei resurse

cazuri concrete:accesarea datelor despre o producție cinematografică

http://www.imdb.com/title/tt0401383/

acces la prezentările Slideshare ale utilizatorului busaco

http://www.slideshare.net/busaco/presentations

obținerea listei celor ce urmăresc un utilizator autentificathttp://twitter.com/followers

avansat

Page 53: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: metodologie

Divizarea în resurse a setului de dateale problemei

aceste resurse (object instances) pot fi organizate în colecții (collections) sau depozite (stores)

vezi și D. Denicola, Creating Truly RESTful APIs (2013)www.slideshare.net/domenicdenicola/creating-truly-res-tful-apis

avansat

Page 54: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: metodologie

Divizarea în resurse a setului de dateale problemei

colecție

catalog de resurse gestionate de serverclienții pot propune alterarea colecției

serverul decide care-i rezultatul unei operații

exemple (GitHub): /orgs/openstack/repos, /orgs/openstack/events

avansat

Page 55: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: metodologie

Divizarea în resurse a setului de dateale problemei

depozit

„rezervă” de resurse gestionată de client(inclusiv filtrare, sortare, paginare, accesare meta-date,…)

exemplu (GitHub): /users/openstack/repos?page=2&per_page=3

avansat

Page 56: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: metodologie

Proiectarea reprezentării(lor) acceptatece pot fi trimise de aplicația client

și reprezentării(lor) întoarse spre client

de considerat formate standardHTML, Atom, CSV, JSON(-LD), XML

avansat

Page 57: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: metodologie

Integrarea resurselorvia legături hipertext + formulare

exemplificare (GitHub):“All resources may have one or more *_url properties

linking to other resources. These are meant to provide explicit URLs so that proper API clients don’t need

to construct URLs on their own.”https://developer.github.com/v3/#hypermedia

avansat

Page 58: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: metodologie

Crearea de studii de caz

specificarea condițiilor de eroare și/sau de excepție,inclusiv aspecte privind controlul versiunilor API-ului

avansat

Page 59: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: metodologie

Interacțiunea cu un serviciu Web dezvoltat în stilul RESTse poate face via un API

(Application Programming Interface)

avansat

Page 60: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

abordarea MV* tradițională (sans servicii Web)

www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/

brow-ser

prezen-tare

proce-sare

abstrac-tizaredate

pagini <Web/>

HTML, CSS,…

server „gras” (fat)

client „prostuț” (dumb)

frontend backend

Page 61: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

browsermodern

prezen-tare

proce-sare

abstrac-tizaredate

recurgere la API

JSON, XML, CSV,…

server „slab” (thin)

client „puternic”(HTML5)

aplicație JavaScript(eventual, via app store)

abordarea JavaScript via API

www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/

avansat

Page 62: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

sistem de

operare

prezen-tare

proce-sare

abstrac-tizaredate

recurgere la API

JSON, XML, CSV,…

server „slab” (thin)

client „isteț”(smart device)

aplicație nativăC#, Java, Obj-C, Swift,…(uzual, via app store)

aplicații native (desktop și/sau mobile)

www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/

avansat

Page 63: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

brow-ser

prezen-tare

proce-sare

abstrac-tizaredate

API

JSONet al.

server „slab” (thin)

client „puternic”și/sau „isteț”

abordarea hibridă

server de prezentare

pagini

HTML

www.leaseweblabs.com/2013/10/api-first-architecture-fat-vs-thin-server-debate/

avansat

Page 64: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

StrongLoop APIoperații cu resurse – aici Users

http://myapi-strongdemo.rhcloud.com/explorer/

avansat

Page 65: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

StrongLoop APItestarea interactivă a API-ului

vezi http://strongloop.com/strongblog/node-js-

rest-api-openshift-redhat/

avansat

Page 66: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

(în loc de) pauză

http://wumo.com/wumo/2016/05/06

Page 67: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

Aspecte practice de interes pentru dezvoltatori?

Page 68: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

URL-urile desemnând resurse (concepte) de interes trebuie să fie simple și intuitive

utilizarea substantivelor pentru fiecare „lucru”

colecții de resurse (uzual, la plural)/students

identificatori unici pentru membrii unei colecții/students/tuxy (concret) vs. /students/69 (abstract)

avansat

Page 69: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

URL-urile desemnând resurse (concepte) de interes trebuie să fie simple și intuitive

structura ierarhică a URL-urilor reprezintă ierarhia resurselor din cadrul domeniului modelat

exemplu (GitHub):/repos/Microsoft/PTVS/commits/e95e15…7a3bf91baff88

avansat

Page 70: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

Folosirea verbelor (metodelor) HTTP pentru efectuareade operații asupra unor (colecții de) resurse

resursa(URI)

POST (creează)

GET (accesează)

PUT (actualizează)

DELETE (șterge)

/studentscreează

un student noulistează studenții

existențiactualizează

un set de studențișterge toțistudenții

/students/69

(un URL dejaexistent)

eroareoferă date

despre student

dacă există, actualizează,altfel eroare

ștergestudentulrespectiv

avansat

Page 71: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

Tratarea erorilor

folosirea codurilor de stare HTTP

exemple tipice:200 OK, 206 Partial Content

303 See Other400 Bad Request, 403 Forbidden, 404 Not Found

500 Internal Server Error, 503 Service Unavailable

avansat

Page 72: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

Tratarea erorilor

mesajele returnate trebuie să includă informații utile

exemplu (GitHub): cod de stare HTTP întors – 404

{

"message": "Not Found",

"documentation_url": "https://developer.github.com/v3"

}

avansat

Page 73: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

Controlul versiunilor API-ului dezvoltat

“Never release an API without a versionand make the version mandatory.” (Mulloy, 2012)

specificarea versiuniiîn antetul HTTP vs. în cadrul URL-ului

avansat

https://api.foursquare.com/v2/venues/search

https://api.twitter.com/1.1/statuses/

Page 74: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

Paginarea și oferirea de răspunsuri parțiale

uzual, se folosesc parametri precum limit și offset

/students?limit=33&offset=54

filtrele opționale pot fi delimitate de virgulă/students?fields=name,age,year,email

avansat

Page 75: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

interogări interactive asupra API-ului oferit de The New York Times

http://developer.nytimes.com/

avansat

Page 76: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

răspuns în format JSON

diverse (meta-)date oferite de serverul Web

avansat

Page 77: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

Paginarea și oferirea de răspunsuri parțiale

exemplificări reale: Delicious – /v1/posts/recent?count=30&tag=web

Twitter – api.twitter.com/1.1/search/tweets.json

?q=…&since_id=24012619984051000&

max_id=250126199840518145&result_type=mixed&count=4

avansat

Page 78: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

Eterogenitatea formatelor reprezentărilor întoarse

indicarea formatului în URL via un parametru opțional?alt=json (Google Data)

specificarea formatului acceptat în antetul cererii HTTPAccept: application/json (Digg)

precizarea formatului în numele resursei solicitate/venue.json (Foursquare)

avansat

Page 79: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

Utilizarea subdomeniilor pentru API-uri diferiteale aceluiași ofertant de servicii

exemplificare:search.twitter.com

stream.twitter.com

api.twitter.com

avansat

Page 80: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: privire pragmatică

Descrierea abstractă a API-urilor REST

OpenAPI Specification (ex-Swagger) – https://openapis.org/

RAML (RESTful API Modeling Language) – http://raml.org/

API Blueprint – https://apiblueprint.org/

detalii în K. Sandoval, Top Specification Formats for REST APIs (2015)http://nordicapis.com/top-specification-formats-for-rest-apis/

avansat

Page 81: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

implementare

avansat

un API pentru API-uri la http://theapistack.com/

Page 82: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

Cum pot fi accesatereprezentări de resurse Web prin REST?

Page 83: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: implementare

Biblioteci/API-uri implementând HTTP

libcURL (C; portări Perl, PHP, Ruby,…): curl.haxx.se/libcurl/

Apache HttpComponents (Java): http://hc.apache.org/

haskage (Haskell): http://hackage.haskell.org/package/HTTP

http (pachet Go): http://golang.org/pkg/net/http/

httplib (Python 2) + http.client (Python 3)

Page 84: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: implementare

Biblioteci/API-uri implementând HTTP

LWP (bibliotecă Perl): github.com/libwww-perl/libwww-perl

neon (bibliotecă C): http://www.webdav.org/neon/

rest (Node.js): https://www.npmjs.org/package/rest

RestKit (pentru iOS): http://restkit.org/

RestSharp (pentru .NET): http://restsharp.org/

Page 85: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: implementare – exemplul 1

Invocarea unui serviciu Web de prescurtarea URL-urilor – http://is.gd/

un nou URL prescurtat va fi creat folosind adresahttp://is.gd/create.php?format=xml&url=adresaWeb

alte formate: web (HTML), json,

simple (text)

Page 86: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

Cererea HTTP ce invocă serviciul Web:

GET /create.php?format=xml&url=profs.info.uaic.ro/~busaco HTTP/1.1

Host: is.gd

Page 87: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

Cererea HTTP ce invocă serviciul Web:

GET /create.php?format=xml&url=profs.info.uaic.ro/~busaco HTTP/1.1

Host: is.gd

Răspunsul obținut, transmis de serverul Web:

HTTP/1.1 200 OK

Server: nginx

Date: Fri, 08 May 2015 12:27:00 GMT

Content-Type: text/xml;charset=UTF-8

<?xml version="1.0" encoding="UTF-8" ?>

<output>

<shorturl>http://is.gd/DBmG2L</shorturl>

</output>

reprezentare POX (Plain Old XML)

Page 88: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

// inițializăm cURL$c = curl_init ();// stabilim URL-ul serviciului Web invocatcurl_setopt ($c, CURLOPT_URL,

'http://is.gd/create.php?format=xml&url=profs.info.uaic.ro/~busaco');// rezultatul cererii va fi disponibil ca șir de caracterecurl_setopt ($c, CURLOPT_RETURNTRANSFER, 1);// preluăm resursa oferită de server (aici, un document XML)$res = curl_exec ($c);// închidem conexiunea cURLcurl_close ($c); // procesăm rezultatul via DOM$doc = new DOMDocument ();$doc->loadXML ($res);// preluăm conținutul elementului <shorturl>$urls = $doc->getElementsByTagName ('shorturl');foreach ($urls as $url) {

echo '<p>Adresa prescurtată este: ' . $url->nodeValue . '</p>';}

apelarea serviciului Web via libcurl (PHP)

Page 89: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: implementare – exemplul 1

Page 90: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: implementare – exemplul 2

Accesarea datelor publice vizând universul ficțional „Războiul stelelor” (Star Wars)

colecții de resurse: Planets, Spaceships, Vehicles, People, Films, Species

fiecare categorie de resurse are proprietăți specifice e.g., orice instanță de Films include title, director, characters,…

Page 91: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: implementare

detalii la https://swapi.co/documentation

{

"name": "Leia Organa",

"height": "150",

"mass": "49",

"hair_color": "brown",

"skin_color": "light",

"eye_color": "brown",

"birth_year": "19BBY",

"gender": "female",

"homeworld": "http://swapi.co/api/planets/2/",

"films": [ "http://swapi.co/api/films/6/",… ],

"species": [ "http://swapi.co/api/species/1/" ],

"vehicles": [

"http://swapi.co/api/vehicles/30/" ],

"starships": [],

"created": "2014-12-10T15:20:09.791000Z",

"edited": "2014-12-20T21:17:50.315000Z",

"url": "http://swapi.co/api/people/5/"

}

răspuns disponibil în format

JSON

Page 92: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: implementare

Biblioteci/API-uri implementând HTTP

permit dezvoltarea de aplicații desktop, mobile etc.

suport pentru crearea de aplicatii hibride (mash-up-uri) la nivel de server

nu funcționează în navigatorul Web

Page 93: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: implementare

Biblioteci/API-uri implementând HTTP

permit dezvoltarea de aplicații desktop, mobile etc.

suport pentru crearea de aplicatii hibride (mash-up-uri) la nivel de server

nu funcționează în navigatorul Web

atenție la problemele de securitate ce pot apărea!

Page 94: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: implementare

Navigatoarele Web actuale

nu necesită o interfață de programare (API) specifică

disponibilitate pe orice platformă

suport pentru REST via obiectul XMLHttpRequest (Ajax)sau folosind WebSocket-uri (HTML5)

vezi cursul viitor

Page 95: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

ASP.NET MVC + Web API (C# et al.): www.asp.net/web-api

cujoJS, Express, Restify (Node.js)https://nodejsmodules.org/tags/rest

JAX-RS – Java Architecture for RESTful web Serviceshttps://jax-rs-spec.java.net/

Catalyst, Jifty, Mojolicious, REST::Client (Perl)

Page 96: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

Restlet (Java): http://restlet.org/

Bottle, Cornice, Django, Eve, Flask, Pecan (Python)

Grape, RESTRack, Ruby on Rails (Ruby)www.ruby-toolbox.com/categories/API_Builders

Epiphany, Fat-Free, Flight, FRAPI, Slim(micro-framework-uri PHP)

…și multe altele

Page 97: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

Servicii publice ce pot fi consumate via REST – exemple:500px, AIDSInfo, Amazon, Basecamp, Blip.tv, DBpedia,

eBay, Ericsson, Facebook, GitHub, Google, LinkedIn,Mastercard, Nodejitsu, Pipl, Quora, SlideShare, Tumblr,…

a se consulta situl ProgrammableWebhttp://tinyurl.com/2ssfc2

Page 98: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

Servicii publice ce pot fi consumate via REST – exemple:500px, AIDSInfo, Amazon, Basecamp, Blip.tv, DBpedia,

eBay, Ericsson, Facebook, GitHub, Google, LinkedIn,Mastercard, Nodejitsu, Pipl, Quora, SlideShare, Tumblr,…

inclusiv API publice disponibile pentru C++, C#, Java,JavaScript, PHP, Python, Objective-C, Ruby,…

Page 99: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

studiu de caz: Groupon

avansat

Page 100: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

arhitecturi: exemplu – groupon

Scop: prezentarea de oferte de bunuri de consum

de la o arhitectură monolitică la una adoptând servicii (API-uri) REST

engineering.groupon.com/2013/misc/i-tier-dismantling-the-monoliths/

avansat

Page 101: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

arhitecturi: exemplu – groupon

arhitectură inițială MVC tradițional asigurarea performanței

scalabilitate cu CDN (Content Distribution Network)

și servicii de acces la date

avansat

Page 102: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

arhitecturi: exemplu – groupon

arhitectură eterogenăimplementări separate în funcție de zona geografică

avansat

Page 103: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

arhitecturi: exemplu – groupon

oferirea suportului pentru interacțiuni cu dispozitive mobile

API dedicat, accesul depinzând de localizarea utilizatorului

avansat

Page 104: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

arhitecturi: exemplu – grouponreproiectare

(~20 de aplicații Web separate, independente)

avansat

Page 105: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

În cazul aplicațiilor Web sociale,putea utiliza servicii Web

pentru autorizare și autentificare?

Page 106: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(1) înregistrarea aplicației conceputevia situl entității furnizoare a serviciului

cheie de acces – API key, consumer key, developer key

avansat

Page 107: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(2) pe baza acestei chei, aplicația se va putea autentificapentru a putea fi autorizată să acceseze serviciul

avansat

Page 108: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(2) pe baza acestei chei, aplicația se va putea autentificapentru a putea fi autorizată să acceseze serviciul

pot fi impuse diverse politici de acces (permissions):doar consultare (read), posibilitatea editării etc.

avansat

Page 109: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(3) autentificarea și autorizarea aplicațieiau loc cu acordul utilizatorului

avansat

Page 110: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(3) autentificarea și autorizarea aplicațieiau loc cu acordul utilizatorului

dacă utilizatorul nu este autentificat, i se vor solicitainformațiile de autentificare (e.g., nume + parolă),

apoi va putea autoriza aplicația să aiba acces la datevia serviciul Web furnizat

avansat

Page 111: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(4) aplicația apelează funcționalitățile oferite de serviciupentru preluarea/modificarea datelor de interes,

conform politicilor de acces

avansat

Page 112: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare

Pași uzuali de urmat pentru implementarea unei aplicații ce va invoca un serviciu Web pe baza unui API public:

(4) aplicația apelează funcționalitățile oferite de serviciu

sesiunea curentă va fi stabilită și menținutăpe baza unor informații de autentificare (auth tokens)

avansat

Page 113: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare – oauth

Autorizarea unei aplicații să acceseze date private într-un mod standardizat – pe baza tehnologiilor

Web actuale – se poate realiza via OAuth

avansat

Page 114: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare – oauth

Autorizarea unei aplicații să acceseze date private într-un mod standardizat – pe baza tehnologiilor

Web actuale – se poate realiza via OAuth

protocol deschis – RFC 6749

OAuth 1.0 (2010), OAuth 2.0 (2012)

http://oauth.net/2/

avansat

Page 115: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

securitatea datelor

avansat

procesele de autorizare a accesului la o resursă Webconform Dominik Mengelt (2013)

Page 116: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

securitatea datelor

exemplu concret – Facebook: autorizare cu diverse permisiuni – e.g., age_range, email (acces la adresa de e-mail a unui utilizator),public_profile, read_mailbox, user_birthday, user_friends,

user_likes, user_photos, user_statushttps://developers.facebook.com/docs/facebook-login/permissions/v2.0

avansat

Page 117: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare – oauth

Biblioteci disponibile pentru C#, Go, Erlang, Java,JavaScript, Objective-C, Perl, PHP, Python, Ruby, Swift,…

http://oauth.net/code/

pentru PHP: OAuth 2 Server + OAuth 2 Clienta se vizita și https://thephpleague.com/

mod_auth_openidc – modul Apachehttps://github.com/pingidentity/mod_auth_openidc

avansat

Page 118: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare – oauth

exemplificare: hello.js – soluție modulară, la nivel de client, vizând autentificarea și

accesarea serviciilor Web via RESTadodson.com/hello.js/

avansat

Page 119: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare – oauth

Autentificare via servicii Web specifice – exemple:

GitHub – https://developer.github.com/v3/oauth/

Google – developers.google.com/identity/protocols/OAuth2

LinkedIn – https://developer.linkedin.com/docs/oauth2

Live Connect (Microsoft) – http://tinyurl.com/zztr97h

Pinterest – developers.pinterest.com/docs/api/overview/

Stack Exchange – api.stackexchange.com/docs/authentication

Twitter – https://dev.twitter.com/oauth

WordPress – https://developer.wordpress.com/docs/oauth2/

avansat

Page 120: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare – openid

de experimentat accesul la diverse date (e.g., persoane de contact via Google Contacts API) pe baza OAuth 2.0 Playground

https://developers.google.com/oauthplayground/

avansat

Page 121: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare – openid

OpenID

manieră descentralizată de autentificare a utilizatoruluila nivel de Web pe baza paradigmei SSO – Single Sign On

utilizatorul poate demonstra că deține un URL specificmenit a-l identifica on-line via un ofertant (serviciu)

de identitate digitală (identity provider)e.g., folosind o aplicație Web socială

http://openid.net/get-an-openid/

avansat

Page 122: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare – openidFiecare identitate e

desemnată de un URL (stabilit de identity provider):

nume.wordpress.com

google.com/profiles/me

etc.

pentru a-și confirmaidentitatea, utilizatorul

va trebui să se autentifice:nume de cont + parolă,

smart card, date biometrice,

avansat

Page 123: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

rest: dezvoltare – openid

OpenID

biblioteci open source disponibilepentru C, C#, Java, JavaScript, PHP, Python, Ruby,…

http://openid.net/developers/libraries/

avansat

Page 124: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

soap vs. rest

SOAP REST

Acțiuni arbitrare (verbe) Acțiuni fixe – HTTP: GET, POST,…

Structuri de date oricât de complexe – inclusiv validare

Operează asupra reprezentărilorde resurse – XML, JSON, HTML

Descriere complexă a serviciului(pe baza WSDL)

Scalabil(mai ușor de extins)

Suport pentru XML messaging Bazat pe URI

Dezvoltare sofisticată: securitate, intermediari, specificații WS-*, interoperabilitate,…

Uzual, mai facil de programat(+disponibilitatea API-urilor)

Specific mediului enterprise(infrastructuri complexe)

Abordare pragmaticăaplicații sociale et al. (Web 2.0)

avansat

Page 125: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/Tehnologii Web

dezvoltare de servicii Web via REST

⊷considerații privind autentificarea & autorizarea

Page 126: Web 2016 (11/13) Servicii Web. Paradigma REST

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co/

episodul viitor: suita de tehnologii Ajaxaplicații Web hibride (mash-ups)