dezvoltarea aplicațiilor web
TRANSCRIPT
![Page 1: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/1.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Dezvoltarea aplicațiilor Web
⤄servicii Web în stil REST
![Page 2: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/2.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
„Prima calitate a stilului este claritatea.”
Aristotel
![Page 3: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/3.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Cum pot fi accesate și procesate resursele– date, informații, cunoștințe –
disponibile pe Web?
![Page 4: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/4.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
nevoi ale dezvoltatorilor Web
Soluții multi-platformă, slab-conectate
integrare (în timp-real) la nivel de Internet/Weba aplicațiilor, serviciilor și sistemelor
![Page 5: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/5.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
nevoi ale dezvoltatorilor Web
Soluții multi-platformă, slab-conectate
integrare (în timp-real) la nivel de Internet/Weba aplicațiilor, serviciilor și sistemelor
exemplificare: găsirea ofertelor de servicii,pe baza localizării geografice a utilizatorului,
în contextul dispozitivelor mobile
![Page 6: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/6.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
nevoi ale dezvoltatorilor Web
Soluții multi-platformă, slab-conectate
datele să poată fi descrise pentru a fi „înțelese”de calculatoare și pentru a fi interconectate facil
![Page 7: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/7.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
nevoi ale dezvoltatorilor Web
Soluții multi-platformă, slab-conectate
datele să poată fi descrise pentru a fi „înțelese”de calculatoare și pentru a fi interconectate facil
Web “puzzles”inter-conectarea mai multor servicii oferind date de
interes, conform preferințelor utilizatorului
![Page 8: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/8.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
nevoi ale dezvoltatorilor Web
Servicii atașabile (pluggable) & versatile
Software as a Service – SaaS
Application Service Provider – ASP
![Page 9: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/9.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soluție
Divizarea aplicațiilor în servicii – independente –care se pot compune,
menite a se conecta și orchestra în mod spontanîn cadrul proceselor de afaceri/tehnice
Web component-based software
![Page 10: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/10.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soluție
“The Web is the computer”
disponibilitatea unei/unor arhitecturi care…
oferă suport pentru paradigme de comunicare– bazată pe actualele tehnologii Web –
între aplicații eterogene
![Page 11: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/11.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soluție
“The Web is the computer”
disponibilitatea unei/unor arhitecturi care…
permit(e) localizarea transparentă a serviciilor
![Page 12: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/12.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soluție
“The Web is the computer”
disponibilitatea unei/unor arhitecturi care…
facilitează adăugarea, înlocuirea, eliminareaserviciilor în mod dinamic
![Page 13: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/13.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soluție
“The Web is the computer”
disponibilitatea unei/unor arhitecturi care…
ascund(e) dezvoltatorului detaliile de sistem
![Page 14: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/14.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soluție
“The Web is the computer”
disponibilitatea unei/unor arhitecturi care…
asigură calitatea dezvoltării și exploatăriiaplicațiilor distribuite și/sau paralele:
standardizare, securitate, disponibilitate, reutilizare, mentenanță etc.
![Page 15: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/15.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Ce sunt serviciile Web?
![Page 16: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/16.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
“A service is an abstract resource that represents a capability of performing tasks that form
a coherent functionality from the point of view of providers entities and requesters entities.”
www.w3.org/TR/ws-gloss/
![Page 17: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/17.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
“A Web service is a software system designed to support interoperable machine-to-machine
interaction over a network.”
www.w3.org/TR/ws-gloss/
![Page 18: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/18.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
Software oferind o funcționalitate specifică
acces la resurse – Instagram, Pinterest, Slideshare, Vimeoagregare de știri – Feedly, Reddit
cartografiere – Google Maps, Nokia HERE, OpenStreetMapmesagerie instantanee – Snapchat, Telegram, Twilio
procesări – IBM Watson, TensorFlow, Skyttle,…realizare de statistici Web – e.g., Google Analytics
rețele sociale – Facebook Open Graph, Twitterspelling checking – Bing Spell Check, xSpell,…
stocare de date – Amazon S3, Dropbox, OneDrive etc.…
![Page 19: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/19.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
utilizate – la distanță –de alte aplicații/servicii
![Page 20: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/20.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
Accesate standardizat via Web
adresare de resurse cu URItransfer de date via HTTP
mesaje adoptând formate de date: CSV, JSON, XML,…
![Page 21: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/21.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Cum am implementa un serviciu?
![Page 22: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/22.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
Implementare standard
recurgerea la servere + framework-uri de aplicații Web
ASP.NET, Django, Node.js, PHP (CodeIgnater, Laravel,…),
Play!, Ruby on Rails,…
![Page 23: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/23.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
Tradițional, aplicația oferă o interfață-utilizator disponibilă pe Web
limbaj de marcare – e.g., HTMLstiluri de prezentare a conținutului – CSS
interactivitate via JavaScript (+biblioteci/framework-uri)
![Page 24: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/24.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
Tradițional, aplicația oferă o interfață-utilizator disponibilă pe Web
cererile sunt capt(ur)ate via formulare+ legături hipertext
![Page 25: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/25.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
Tradițional, aplicația oferă o interfață-utilizator disponibilă pe Web
utilizatorii umani trebuie să interpreteze etichetele și câmpurile de dialog
![Page 26: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/26.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
Tradițional, aplicația oferă o interfață-utilizator disponibilă pe Web
serviciul implementat oferă un răspuns(o reprezentare a unei resurse Web)
uzual, un document HTML al cărui conținute transferat la client conform unui protocol: HTTP(S)
![Page 27: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/27.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
Cum obținem răspunsul pentru a fi (re)folositîn programele noastre?
procesarea datelor din codul HTMLWeb scraping
<div class="ct-cs"><input id="exchange_rate" value="4.4155770975" type="hidden">
<input id="fob.log_input_ct" value="" type="hidden">…<table>…</table></div>
![Page 28: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/28.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web
Cum obținem răspunsul pentru a fi (re)folositîn programele noastre?
orice modificare în marcajerescrierea programului de preluare a datelor din documentul HTML
???!
![Page 29: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/29.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web: caracterizare
Serviciile Web fac explicite specificațiile implicite
datele de intrare și răspunsul pot fi specificate (riguros)via diverse maniere de validare
![Page 30: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/30.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web: caracterizare
Utilizate la interacțiunea dintre aplicații
dinamice
lipsa unei cunoașteri a-priori a interacțiuniicu alte aplicații/servicii Web
![Page 31: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/31.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web: caracterizare
Puncte finale utilizate pentru procesarea datelor, în manieră publică – eventual, via API-uri deschise
![Page 32: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/32.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
servicii web: caracterizare
Dezvoltate pe baza platformelor, arhitecturilor, tehnologiilor și limbajelor curente
![Page 33: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/33.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Există un model arhitectural de dezvoltarea serviciilor la nivel de Web?
![Page 34: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/34.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soa
Arhitectura orientată spre servicii
SOA – Service Oriented Architecture
![Page 35: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/35.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soa
Stil arhitectural de proiectare și dezvoltarede aplicații considerate drept servicii
care pot fi invocate de alte aplicații
![Page 36: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/36.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soa
Paradigmă de dezvoltare a software-uluicare adoptă folosirea de servicii,
oferind funcționalități solicitate de utilizatori
resursele sunt disponibile via o suită de serviciiindependente ale căror implementărinu trebuie să fie cunoscute (black box)
![Page 37: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/37.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soa
Componentele sistemului în ansambluau un grad mare de independență (de-coupling)
serviciile trebuie proiectate să interacționeze fără a exista dependențe între acestea
![Page 38: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/38.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soa
Serviciile partajează un contract formal
necesitatea unei descrieri formale a serviciului:operații oferite (interfața serviciului)
maniera de interschimb a datelor (cerere + răspuns)maniera de descoperire (service discoverability)
calitatea unui serviciu (SLA – service-level agreement)
![Page 39: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/39.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soa
Serviciile pot fi recompuse/orchestrateconform cerințelor sau contextului de exploatare
composable servicesreusable services
![Page 40: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/40.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soa
Serviciile nu vor depinde de starea comunicării(statelessness)
pentru a efectua o procesare, cantitatea de informațiece trebuie reținută trebuie să fie minimală
![Page 41: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/41.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
soade la aplicații Web dezvoltate tradițional
la arhitecturi bazate pe servicii
Jay O’Connor (2014)http://tinyurl.com/l62tjab
![Page 42: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/42.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
exemplu autohton: proiectul ubiGuide – 2014(Ionuț Dănilă & Mihaela Ghimiciu, absolvenți FII)
servicii publice folosite: ABBYY Cloud OCR, AlchemyAPI, Google Places API, YouTube API,…
biblioteci: Flickr.NET, GART (Geo Augmented Reality Toolkit), Hammock, TweetSharp etc.
www.youtube.com/watch?v=wygXE6hQ07c
www.slideshare.net/ionutdanila/ubi-guide
![Page 43: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/43.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
structura conceptuală stratificată a unei platforme bazate pe servicii Web
protocoale (HTTP, SMTP,…)
servicii de regăsire: UDDI
descrieri de servicii: WSDL
context al serviciului (cine, de ce,…)
servicii de bază (calendar, tranzacții,…)
sist. tradiționale
server(e) backend
API
workflow engine
mașină virtuală
micro-/macro-serv.
ofertant/utilizator de servicii Web
![Page 44: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/44.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Există o modalitate pragmatică privinddezvoltarea și invocarea serviciilor Web?
![Page 45: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/45.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
serviciile Web pot fi dezvoltate via SOAP și/sau RESTS. Tilkov, REST: Not an Intro (2013)
speakerdeck.com/stilkov/rest-not-an-intro-1
service interface
service logic
business rules
data access
data
resources
hypermediarepresen-
tations:JSON, XML,…
HTTP
operations
SOAP
XML messages
WS-*
![Page 46: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/46.jpg)
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 47: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/47.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
Viziune complementară de implementare șiutilizare a serviciilor Web – fără SOAP
SOAP Envelope
SOAP Headerbloc antetbloc antet
SOAP Bodybloc corpbloc corpbloc corpbloc corp
![Page 48: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/48.jpg)
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 49: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/49.jpg)
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 50: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/50.jpg)
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 51: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/51.jpg)
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, application/json, application/rdf+xml, image/png
detalii în N.Freed et al., Media Types, 2017www.iana.org/assignments/media-types/media-types.xhtml
![Page 52: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/52.jpg)
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 53: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/53.jpg)
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 54: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/54.jpg)
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 55: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/55.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
Verbele (acțiunile) sunt stipulate de un protocol
![Page 56: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/56.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
HyperText Transfer Protocol
protocol fiabil, de tip cerere/răspuns
port standard de acces: 80
https://profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html#week2
![Page 57: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/57.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
HTTP/1.1
standard Internet: RFC 2616 (1999)
din 2014, definit de RFC 7230—7235
www.w3.org/Protocols/
un tutorial: www.code-maze.com/http-series/
![Page 58: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/58.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
HTTP/2.0
RFC 7540 (2015)
focalizat asupra performanței
http2.github.io
![Page 59: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/59.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
HTTP/2.0
mesaje binarereutilizarea conexiunii TCP
multiplexarecompresia anteturilor – HPACK
trimiterea mesajelor spre client (server push)
implementări: github.com/http2/http2-spec/wiki/Implementations
![Page 60: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/60.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
GET
accesează (preia) o reprezentare a unei resurse
nu conduce la modificarea stării serverului – safe
idempotentă – cereri identice vor conduce la oferireaaceluiași răspuns (aceeași reprezentare)
![Page 61: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/61.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
HEAD
similară cu GET, dar furnizează doar meta-date(nu oferă reprezentarea propriu-zisă)
e.g., ultima actualizare, lungimea conținutului,…
![Page 62: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/62.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
PUT
înlocuiește (actualizează) o reprezentare de resursă saueventual creează o resursă la nivel de server Web
(al cărei URI e deja cunoscut)
uzual, returnează URI-ul resursei
nu e considerată safe, dar este idempotentă
![Page 63: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/63.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
PATCH
permite actualizarea parțială a unei reprezentări a unei resurse (PUT nu oferă o asemenea facilitate)
nu este safe și nici idempotentă
![Page 64: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/64.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
POST
creează o resursă (uzual, subordonată altei resurse)
opțional, pot fi realizate 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 65: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/65.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
DELETE
șterge (elimină) o resursă desemnată de un URI
este idempotentă
![Page 66: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/66.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
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 67: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/67.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
GET /sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org
&query=SELECT+DISTINCT+%3Fclass%0D%0A
WHERE+%7B%0D%0A++%3Fclass+a+owl%3AClass%0D%0A
%7D+LIMIT+7&format=application%2Fjson&timeout=30000 HTTP/1.1
Host: dbpedia.org
User-Agent: Mozilla/5.0 … Gecko/20100101 …
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en,en-GB;q=0.5
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://dbpedia.org/sparql
Connection: keep-alive
URL encoding
câmpuri-antet și valorile lor
un mesaj HTTP de tip cerere (request) trimis de client (uzual, un browser Web) spre server
aici, o cerere încapsulând o interogare SPARQL către DBpedia
![Page 68: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/68.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
HTTP/1.1 200 OK
Date: Fri, 06 Oct 2017 07:03:52 GMT
Content-Type: application/json
Content-Length: 691
Connection: keep-alive
Server: Virtuoso/07.20.3224 (Linux) i686-generic-linux-glibc212-64
X-SPARQL-default-graph: http://dbpedia.org
Expires: Fri, 13 Oct 2017 07:03:52 GMT
Cache-Control: max-age=604800
…
{ "head": { "link": [], "vars": ["class"] },
"results": { "distinct": false, "ordered": true, "bindings": [
{ "class": { "type": "uri",
"value": "http://dbpedia.org/ontology/Place" }},… ]
} }
un mesaj HTTP de tip răspuns (response) de la serveraici, în format JSON
tipul MIME al reprezentării oferite
câmp-antet nestandardizat
met
a-d
ate
con
țin
ut
(dat
e)
![Page 69: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/69.jpg)
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 70: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/70.jpg)
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 71: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/71.jpg)
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)
![Page 72: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/72.jpg)
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 (media types)
Adresabilitatea se rezolvă via URI
![Page 73: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/73.jpg)
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 74: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/74.jpg)
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 75: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/75.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
Reprezentările de resurse pot fi stocate temporar
caching
![Page 76: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/76.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
stat
eles
s se
rver
client
cache
client
cache
adaptare după B. Mulloy (2012)
![Page 77: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/77.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
stat
eles
s se
rver
client
cache
client
cache
adaptare după B. Mulloy (2012)
fiecare cerere trebuie să conțină toateinformațiile necesare procesării
![Page 78: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/78.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
stat
eles
s se
rver
client
cache
client
cache
adaptare după B. Mulloy (2012)
contextul activitățilornu-i stocat de server
![Page 79: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/79.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
stat
eles
s se
rver
client
cache
client
cache
adaptare după B. Mulloy (2012)
clientul are dreptul săreutilizeze datele recepționate
![Page 80: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/80.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest
Aplicația Web dezvoltată va fi stratificată
layered system
![Page 81: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/81.jpg)
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)
![Page 82: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/82.jpg)
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
![Page 83: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/83.jpg)
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
![Page 84: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/84.jpg)
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 – black box
![Page 85: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/85.jpg)
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
![Page 86: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/86.jpg)
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 87: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/87.jpg)
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, partajare
![Page 88: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/88.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Resursa URL Metoda Reprezentare
Bookmark /bookmarks/{hash} GET application/bookmark+xml
Bookmark /bookmarks/{hash} PUT application/bookmark+xml
Bookmark /bookmarks/{hash} 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 89: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/89.jpg)
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/a211528f…bdcf"/>
<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 – hash (SHA-1, SHA-3,…)
![Page 90: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/90.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
GET /bookmarks/a211528f…bdcf200 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 91: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/91.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
POST /bookmarksContent-type: application/bookmark+xml…201 CreatedLocation: /bookmarks/a211528f…bdcf
PUT /bookmarks/a211528f…bdcfContent-type: application/bookmark+xml…200 OK
creareaunui bookmark
înlocuireaunui bookmark
![Page 92: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/92.jpg)
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
![Page 93: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/93.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
coO resursă poate avea asociate reprezentărice pot fi accesate/alterate via operații HTTP
CRUD – Create, Retrieve, Update, Delete
Operation SQL HTTP
Create INSERT PUT POST
Read (Retrieve) SELECT GET
Update (Modify) UPDATE PUT POST PATCH
Delete (Destroy) DELETE DELETE
![Page 94: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/94.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Putem adopta o metodologie vizânddezvoltarea de servicii Web (API-uri)
aliniate paradigmei REST?
![Page 95: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/95.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: metodologie
Divizarea datelor problemei în categorii
clase tipice de resurse:Utilizatori
Documente – alternative: Fotografii, Produse, Software,…Metadate – e.g., Comentarii, Formate, Locatii, Platforme etc.
![Page 96: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/96.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: metodologie
Divizarea datelor problemei în categorii
cazuri concrete:SoundCloud – apigee.com/resources/soundcloud
Tracks Users Me Playlists Groups Comments
StackExchange – apigee.com/resources/stackexchange
Answers Badges Comments Questions Revisions Tags Users
World of Warcraft – apigee.com/resources/wow
Characters Guilds Realms Auctions Items
![Page 97: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/97.jpg)
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
![Page 98: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/98.jpg)
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
![Page 99: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/99.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: metodologie
Organizarea resurselor
aceste resurse (object instances) pot fi organizate în colecții (collections) sau depozite (stores)
a se consulta D. Denicola, Creating Truly RESTful APIs (2013)www.slideshare.net/domenicdenicola/creating-truly-res-tful-apis
![Page 100: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/100.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: metodologie
Organizarea resurselor
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
![Page 101: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/101.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: metodologie
Organizarea resurselor
depozit
„rezervă” de resurse gestionată de client(inclusiv filtrare, sortare, paginare, accesare meta-date,…)
exemplu (GitHub): /users/openstack/repos?page=2&per_page=3
![Page 102: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/102.jpg)
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
![Page 103: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/103.jpg)
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
![Page 104: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/104.jpg)
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
![Page 105: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/105.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
StrongLoop API (IBM)operații cu resurse specifice – aici Users
![Page 106: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/106.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
StrongLoop APItestarea interactivă a API-ului
strongloop.com/strongblog/node-js-rest-api-openshift-redhat/
![Page 107: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/107.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Aspecte practice de interes pentru dezvoltatori?
![Page 108: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/108.jpg)
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)
![Page 109: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/109.jpg)
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
![Page 110: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/110.jpg)
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)
eroare 🙁oferă date
despre student
dacă există, actualizează,altfel eroare
ștergestudentulrespectiv
![Page 111: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/111.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: privire pragmatică
Tratarea erorilor
folosirea codurilor de stare HTTP – httpstatuses.com
exemple tipice:200 OK, 204 No Content, 206 Partial Content
303 See Other, 304 Not Modified400 Bad Request, 401 Unauthorized, 403 Forbidden,
404 Not Found, 405 Method Not Allowed500 Internal Server Error, 503 Service Unavailable
![Page 112: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/112.jpg)
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"
}
![Page 113: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/113.jpg)
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)
![Page 114: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/114.jpg)
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
https://api.foursquare.com/v2/venues/explore
https://api.twitter.com/1.1/statuses/
http://world.openfoodfacts.org/api/v0/product/0646809521249
![Page 115: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/115.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: privire pragmatică
Paginarea și oferirea de răspunsuri parțiale
de obicei, 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
![Page 116: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/116.jpg)
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
developer.nytimes.com
![Page 117: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/117.jpg)
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
![Page 118: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/118.jpg)
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)
![Page 119: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/119.jpg)
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
![Page 120: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/120.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Cum pot fi accesatereprezentări de resurse Web prin REST?
![Page 121: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/121.jpg)
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/
http (pachet Go): http://golang.org/pkg/net/http/
httplib (Python 2) + http.client (Python 3)neon (bibliotecă C): http://www.webdav.org/neon/
rest (Node.js): https://www.npmjs.org/package/rest
RestKit (macOS + iOS): https://github.com/RestKit/RestKit
RestSharp (pentru .NET): http://restsharp.org/
![Page 122: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/122.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: implementare
Studiu de caz: accesarea datelor publice privitoare la universul fictiv „Războiul stelelor”
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 123: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/123.jpg)
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 124: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/124.jpg)
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 125: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/125.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: implementare
Navigatoarele Web actuale
nu necesită un API distinct pentru acces via HTTP
disponibilitate pe orice platformă
suport pentru REST prin obiectul XMLHttpRequest (Ajax),Fetch API (HTML5) ori WebSocket API (HTML5)
![Page 126: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/126.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: dezvoltare – exemplificări
ASP.NET MVC + Web API (C# et al.): www.asp.net/web-api
APIconnect, Express, Restify, webservice (Node.js)https://nodejsmodules.org/tags/rest
JAX-RS – Java Architecture for RESTful Serviceshttps://jax-rs-spec.java.net/
Restlet (Java): https://restlet.com/projects/restlet-framework/
Cornice, Django, Eve, Pecan (Python)Grape, RESTRack, Ruby on Rails (Ruby)
www.ruby-toolbox.com/categories/API_Builders
Fat-Free, Slim (micro-framework-uri PHP)
![Page 127: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/127.jpg)
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,…
de explorat ProgrammableWebwww.programmableweb.com/category/all/apis
![Page 128: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/128.jpg)
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 129: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/129.jpg)
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
![Page 130: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/130.jpg)
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
![Page 131: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/131.jpg)
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.
a se studia și inițiativa Open Credentials: opencreds.org
![Page 132: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/132.jpg)
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
![Page 133: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/133.jpg)
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 + parola)
– eventual, folosind 2FA (Two Factor Auth) –,apoi va putea autoriza aplicația să aibă acces la date
via serviciul Web furnizat
![Page 134: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/134.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: dezvoltare
autentificare multi-factor (2FA): twofactorauth.org
![Page 135: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/135.jpg)
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
![Page 136: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/136.jpg)
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)
![Page 137: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/137.jpg)
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
![Page 138: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/138.jpg)
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/
![Page 139: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/139.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
securitatea datelor
procesele de autorizare a accesului la o resursă Webconform Dominik Mengelt (2013)
![Page 140: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/140.jpg)
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, user_birthday, user_hometown, user_friends, user_likes, user_photos, rsvp_event și altele
developers.facebook.com/docs/facebook-login/permissions/v2.0
![Page 141: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/141.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: dezvoltare – oauth
Biblioteci (server și/sau client) disponibile pentru C, C++, Go, Erlang, Java, JavaScript, Objective-C, .NET,
Perl, PHP, Python, Ruby, Swift,…http://oauth.net/code/
Servicii proxy de autentificare/autorizare prin OAuth:Auth0 – auth0.com
Hydra – github.com/ory/hydra
OAuth – oauth.io
Okta – developer.okta.com
![Page 142: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/142.jpg)
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/
![Page 143: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/143.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: dezvoltare – oauth
Autentificare via servicii Web specifice – exemple:
GitHub – developer.github.com/v3/oauth/
Google – developers.google.com/identity/protocols/OAuth2
LinkedIn – 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 – dev.twitter.com/oauth
WordPress – developer.wordpress.com/docs/oauth2/
![Page 144: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/144.jpg)
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
developers.google.com/oauthplayground/
![Page 145: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/145.jpg)
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ă
![Page 146: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/146.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: dezvoltare – openid
Fiecare identitate a unui utilizator e desemnată de un URL (stabilit de identity provider)
exemplu: steamcommunity.com/openid/id/steamid
pentru a-și confirma identitatea,utilizatorul va trebui să se autentifice:
nume de cont + parolă, smart card, date biometrice,…
![Page 147: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/147.jpg)
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/
![Page 148: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/148.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: dezvoltare – openid
OpenID Connect
oferă un nivel vizând identitatea utilizatorului (identity layer) pe baza protocolului OAuth 2
recurge la formatul JWT (JSON Web Token)standardizat în RFC 7519 (2015)
openid.net/connect/
![Page 149: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/149.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rest: dezvoltare – openid
OpenID Connect
biblioteci open source disponibile pentru C, C#, Java, JavaScript, PHP, Python, Ruby, TypeScript,…
openid.net/developers/libraries/
suport oferit de serverul Web:mod_auth_openidc – modul Apachegithub.com/pingidentity/mod_auth_openidc
L. Crilly, Authenticating API Clients with JWT (2016)www.nginx.com/blog/authenticating-api-clients-jwt-nginx-plus/
![Page 150: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/150.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
Mesaje – de autentificare sau interschimb de informații –
vehiculate în format JWT
resurse de interes + instrumente oferite de jwt.io
jeton JWT
![Page 151: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/151.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
rezumat
⤄aplicații orientate spre servicii Web în stilul REST
aspecte vizând autorizarea și autentificarea
![Page 152: Dezvoltarea aplicațiilor Web](https://reader034.vdocuments.net/reader034/viewer/2022042600/58a2cdf71a28ab1f238bc16d/html5/thumbnails/152.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co
episodul viitor: arhitectura aplicațiilor Webde la API-uri și mashup-uri la proiectare arhitecturală