![Page 1: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/1.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Tehnologii Web
servicii Web (II)
dezvoltarea de aplicații Web
cu REST
Dr. Sabin Corneliu Buraga – profs.info.uaic.ro/~busaco/
![Page 2: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/2.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
„Concizia este sora talentului.”
Anton Cehov
![Page 3: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/3.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest
serviciile Web pot fi dezvoltate via SOAP și/sau RESTStefan 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 4: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/4.jpg)
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 5: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/5.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 Webaxat asupra reprezentării datelor
Roy Fieldingteză de doctorat, 2000 (University of California, Irvine)
www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
![Page 6: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/6.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 7: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/7.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 8: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/8.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, mesaj al unei persoane, fotografie, flux de știri,
componentă software, set de date (dataset), model 3D,…
![Page 9: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/9.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 – formate deschise: HTML, JSON, CSV, PNG, SVG, PDF etc.
![Page 10: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/10.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, text/xml, text/csv, application/json, image/png
detalii în N.Freed et al., Media Types, 23 aprilie 2020www.iana.org/assignments/media-types/media-types.xhtml
![Page 11: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/11.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
(JSON)
resursa
URI
![Page 12: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/12.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
(JSON)
resursa
URI
URLURL
![Page 13: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/13.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
(JSON)
resursa
URI
URLURL
GET POST GET DELETE
![Page 14: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/14.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest
Verbele (acțiunile) sunt stipulate de un protocol
de obicei, HTTP (HyperText Transfer Protocol)
de (re)parcurscursul al doilea
![Page 15: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/15.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 16: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/16.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 17: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/17.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 18: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/18.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 19: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/19.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 20: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/20.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 21: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/21.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 22: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/22.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
restMetoda HTTP Idempotent Safe
GET 🗸 🗸
POST ✗ ✗
PUT 🗸 ✗
PATCH ✗ ✗
OPTIONS 🗸 🗸
HEAD 🗸 🗸
DELETE 🗸 ✗
de studiat și articolul Tamas Piros, RESTful API Design – POST vs PUT vs PATCH, 2018
blog.fullstacktraining.com/restful-api-design-post-vs-put-vs-patch/
avansat
![Page 23: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/23.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 24: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/24.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/editor
resursa4
reprezentare4
(RSS)
http://blog.info/stiri.xml
GET
GET
POST
![Page 25: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/25.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/editor
resursa4
reprezentare4
(RSS)
http://blog.info/stiri.xml
GET
GET
POST
aplicație Web automat finit nedeterminist
tranzițiile dintre stări sunt dictate de transferuri de date pe baza metodelor protocolului – uzual, HTTP
![Page 26: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/26.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/editor
resursa4
reprezentare4
(RSS)
http://blog.info/stiri.xml
GET
GET
POST
pe baza hipermediei – graful de legături între resurse –, dintr-o anumită stare (reprezentare)
se pot realiza tranziții la alte stări
utilizatorul/programul accesează altă resursă via un URI
![Page 27: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/27.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
HATEOAS (Hypermedia As The Engine Of Application State)
B. Doerrfeld, Designing a True REST State Machine (2018)nordicapis.com/designing-a-true-rest-state-machine/
resursa1
reprezentare1
(HTML)
http://blog.info/
resursa2
reprezentare2
(HTML)
http://blog.info/mesaj
resursa3
reprezentare3
(HTML)
http://blog.info/mesaj/editor
resursa4
reprezentare4
(RSS)
http://blog.info/stiri.xml
GET
GET
POST
![Page 28: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/28.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 29: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/29.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 30: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/30.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 calcul contextul
stateless server
![Page 31: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/31.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 32: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/32.jpg)
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)
![Page 33: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/33.jpg)
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
![Page 34: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/34.jpg)
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
![Page 35: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/35.jpg)
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
![Page 36: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/36.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 37: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/37.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 38: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/38.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 39: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/39.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 40: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/40.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 41: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/41.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 42: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/42.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: exemplu
Implementarea unui magazin on-lineoferind dulciuri
![Page 43: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/43.jpg)
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:furnizeazăSortim(), adaugăSortim(), listeazăSortim(), cautăSortim()
operații ce vizează managementul utilizatorilor:furnizeazăUtiliz(), adaugăUtiliz(), ștergeUtiliz(), cautăUtiliz(),…
![Page 44: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/44.jpg)
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/portocale
![Page 45: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/45.jpg)
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/portocale/albastre
URI intuitiv“user/SEO friendly”
![Page 46: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/46.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 47: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/47.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 48: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/48.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 49: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/49.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 50: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/50.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 51: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/51.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 52: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/52.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 (e.g., proxy, cache, gateway)între clienți și resurseperformanță, securitate,...
![Page 53: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/53.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 (e.g., proxy, cache, gateway)între clienți și resurseperformanță, securitate,...
Transferul de date poate fi și asincron – Ajax et al.
într-un curs viitor
![Page 54: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/54.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
O 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 55: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/55.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
caz concret: framework-ul LoopBack – loopback.io/doc/
operații↔REST↔model de implementare↔SQL
![Page 56: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/56.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest
Interacțiunea cu un serviciu Web dezvoltatîn stilul REST se poate face via un API (Application Programming Interface)
vezi prelegerea următoare
![Page 57: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/57.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 58: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/58.jpg)
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, Locații, Platforme etc.
avansat
![Page 59: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/59.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: metodologie
Divizarea datelor problemei în categorii
cazuri concrete:Behance – www.behance.net/dev/api/endpoints/
Projects Users Fields Collections
Coinbase – developers.coinbase.com/api/v2
Accounts Addresses Transactions Deposits Prices Currencies
Discogs – www.discogs.com/developers/
Artists Releases Labels Versions Orders Stats
avansat
![Page 60: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/60.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: metodologie
Divizarea datelor problemei în categorii
cazuri concrete:StackExchange – api.stackexchange.com
Answers Badges Comments Questions Revisions Tags Users
Unsplash – unsplash.com/documentation
Users Photos Collections Stats
World of Warcraft – develop.battle.net/documentation
Characters Guilds Realms Auctions Items
avansat
![Page 61: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/61.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://web.info/Utilizatori/tux
http://web.info/Documente/pinguini-cu-mere-albastre
avansat
![Page 62: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/62.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 știrilor referitoare la un subiect de interes
https://www.reddit.com/r/programming/
acces la prezentările SlideShare ale utilizatorului busaco
https://www.slideshare.net/busaco/presentations
obținerea listei celor ce urmăresc un utilizator autentificathttps://twitter.com/followers
avansat
![Page 63: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/63.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
avansat
![Page 64: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/64.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
avansat
![Page 65: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/65.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
avansat
![Page 66: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/66.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
avansat
![Page 67: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/67.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 formatele standard, comune:CSV – Comma Separated Values
JSON(-LD) – JavaScript Object Notation (-Linked Data) XML – Extensible Markup Language
YAML – YAML Ain’t Markup Language
avansat
![Page 68: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/68.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: metodologie
Integrarea resurselorvia legături hipermedia + 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.”developer.github.com/v3/#hypermedia
avansat
![Page 69: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/69.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
avansat
![Page 70: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/70.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
StrongLoop APIoperații cu resurse specifice – aici Users
avansat
![Page 71: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/71.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
avansat
StrongLoop APItestarea interactivă a API-ului
strongloop.com/strongblog/node-js-rest-api-openshift-redhat/
![Page 72: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/72.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
(în loc de) pauză
![Page 73: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/73.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Aspecte practice de interes pentru dezvoltatori?
![Page 74: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/74.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” (entitate)
avansat
![Page 75: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/75.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
colecții de resurse – uzual, la plural/students
avansat
![Page 76: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/76.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
colecții de resurse – uzual, la plural/students
identificatori unici pentru membrii unei colecții/students/tuxy (concret) vs. /students/69 (abstract)
avansat
![Page 77: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/77.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 al aplicației
exemplu (Discogs):/users/{name}/collection/folders/{f_id}/releases/{r_id}/instances/{i_id}
avansat
![Page 78: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/78.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
avansat
![Page 79: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/79.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: privire pragmatică
Raportarea 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
avansat
![Page 80: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/80.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: privire pragmatică
Raportarea erorilor
mesajele oferite trebuie să includă informații utile
avansat
![Page 81: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/81.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: privire pragmatică
Raportarea erorilor
mesajele oferite trebuie să includă informații utile
exemplu:GitHub – cod de stare HTTP oferit: 404
{
"message": "Not Found",
"documentation_url": "https://developer.github.com/v3"
}
avansat
orice reprezentare oferită include minim un URL
![Page 82: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/82.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)
considerații de interes în articolul J. Curry, Introduction to API Versioning Best Practices (2017):
nordicapis.com/introduction-to-api-versioning-best-practices/
avansat
![Page 83: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/83.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: privire pragmatică
Controlul versiunilor API-ului dezvoltat
specificarea versiunii
soluții uzuale:în antetul cererii HTTP
în cadrul URL-ului
avansat
![Page 84: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/84.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: privire pragmatică
Controlul versiunilor API-ului dezvoltat
specificarea versiunii
în antetul cererii HTTP
Accept: application/vnd.heroku+json; version=3
Accept: application/vnd.discogs.v2.html+json
în unele cazuri, folosind un antet propriu: X-API-Version
avansat
![Page 85: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/85.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: privire pragmatică
Controlul versiunilor API-ului dezvoltat
specificarea versiunii
în cadrul URL-ului – eventual, ca parametru
api.yelp.com/v3/businesses/
ec2.amazonaws.com/?Action=RunInstances&Version=2016-11-15
avansat
![Page 86: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/86.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: privire pragmatică
Controlul versiunilor API-ului dezvoltat
specificarea versiunii
continuous versioningacces via același URI, indiferent de versiunea curentă
practica preferată (“Cool URIs don’t change”)
nordicapis.com/continuous-versioning-strategy-for-internal-apis/
avansat
![Page 87: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/87.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
practică uzuală pentru paginare: page și per_page
/students/projects?page=2&per_page=5
avansat
![Page 88: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/88.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
practică uzuală pentru paginare: page și per_page
/students/projects?page=2&per_page=5
alternativ, se pot folosi parametri precum limit și offset
/students/projects?limit=33&offset=54
avansat
![Page 89: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/89.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
filtrele opționale pot fi delimitate de virgulă/students?fields=name,age,year,email
avansat
![Page 90: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/90.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
?fmt=json (MusicBrainz)
avansat
![Page 91: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/91.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: privire pragmatică
Eterogenitatea formatelor reprezentărilor întoarse
specificarea formatului acceptat în antetul cererii HTTP
Accept: application/json (Digg)
avansat
![Page 92: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/92.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: privire pragmatică
Eterogenitatea formatelor reprezentărilor întoarse
precizarea formatului în numele resursei solicitate
/venue.json (Foursquare)
avansat
![Page 93: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/93.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: privire pragmatică
interogări interactive asupra serviciului de recenzie de filme (Movie Reviews) oferit de The New York Times
developer.nytimes.com
avansat
/movies/v2/reviews/picks.json?order=…
răspunsul în format JSON
![Page 94: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/94.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
avansat
![Page 95: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/95.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 96: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/96.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)
într-un viitor curs
![Page 97: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/97.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare
Biblioteci/API-uri implementând HTTP
Apache HttpComponents (Java): hc.apache.org
Guzzle (PHP 7+): docs.guzzlephp.org/en/stable/
haskage (Haskell): hackage.haskell.org/package/HTTP
http.client (Python 3): docs.python.org/3/library/http.client.html
Httpful (bibliotecă PHP): phphttpclient.com
Hyper Reqwest (biblioteci Rust): hyper.rs docs.rs/reqwest
![Page 98: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/98.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/
LibHTTP (bibliotecă C): www.libhttp.org
LWP (bibliotecă Perl): github.com/libwww-perl/libwww-perl
Requests for PHP: requests.ryanmccue.info
RestSharp (pentru .NET): restsharp.org
![Page 99: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/99.jpg)
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 – https://is.gd/
un nou URL prescurtat va fi creat folosind adresahttps://is.gd/create.php?format=xml&url=adresaWeb
alte formate: web (HTML), json,
simple (text)
![Page 100: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/100.jpg)
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 101: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/101.jpg)
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: Tue, 14 Apr 2020 10:32:07 GMT+2
Content-Type: text/xml;charset=UTF-8
<?xml version="1.0" encoding="UTF-8" ?>
<output>
<shorturl>https://is.gd/K3oomj</shorturl>
</output>
reprezentare POX (Plain Old XML)
![Page 102: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/102.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
$c = curl_init (); // inițializăm cURL// stabilim URL-ul serviciului Web invocatcurl_setopt ($c, CURLOPT_URL,
'https://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, TRUE);// nu verificăm certificatul digital utilizat pentru transferul datelor cu HTTPScurl_setopt ($c, CURLOPT_SSL_VERIFYPEER, FALSE); // preluăm reprezentarea oferită de server (aici, un document XML)$res = curl_exec ($c); // implicit se recurge la metoda GETcurl_close ($c); // închidem conexiunea cURL
$doc = new DOMDocument (); // procesăm rezultatul via DOM$doc->loadXML ($res);// preluăm conținutul elementului <shorturl>$urls = $doc->getElementsByTagName ('shorturl');foreach ($urls as $url) {
echo '<p>New short URL is ' . $url->nodeValue . '</p>';}
apelarea serviciului Web via libcurl (PHP)
![Page 103: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/103.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 1
![Page 104: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/104.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 2
Obținerea unei imagini cu feline corespunzătoare unui cod de stare HTTP dat
ca și în cazul anterior, serviciul Web e disponibil liber, fără autentificare,
dar nu respectă toate principiile REST – i.e. nu e RESTful
https://http.cat/
![Page 105: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/105.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
define ('URL', 'https://http.cat/301');
$c = curl_init (URL); // inițializăm libcurl, indicând URL-ul serviciului
$opt = [ // tabloul opțiunilor de realizare a cererii HTTP// datele vor fi disponibile ca șir de caractereCURLOPT_RETURNTRANSFER => TRUE, // nu verificăm certificatul digitalCURLOPT_SSL_VERIFYPEER => FALSE, // timp de așteptare (în secunde) a stabilirii conexiuniiCURLOPT_CONNECTTIMEOUT => 10, // timp de așteptare (în secunde) a răspunsuluiCURLOPT_TIMEOUT => 10, // codurile 4XX vor conduce la eroareCURLOPT_FAILONERROR => TRUE, // nu se acceptă redirecționăriCURLOPT_FOLLOWLOCATION => FALSE ];
curl_setopt_array ($c, $opt); $res = curl_exec ($c);
vezi exemplul din arhivă
![Page 106: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/106.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
// codul de stare HTTP întors de serverul serviciului Web$codHTTP = curl_getinfo ($c, CURLINFO_RESPONSE_CODE); // tipul conținutului oferit de serviciu$tip = curl_getinfo ($c, CURLINFO_CONTENT_TYPE);
// am primit cu succes o imagine JPEG?if ($codHTTP == 200 && $tip == 'image/jpeg') {
header ('Content-Type: ' . $tip); // trimitem tipul MIME corespunzatorecho $res; // afișăm reprezentarea resursei obținute (aici, imaginea JPEG)
} else {// trimitem codul de stare întors de serviciuhttp_response_code ($codHTTP); header ('Content-Type: text/plain'); echo 'Status code: ' . $codHTTP;
}
curl_close ($c); vezi exemplul
din arhivă
![Page 107: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/107.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 2
conținutul redat + detalii privind transferul datelor
![Page 108: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/108.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 3
Accesarea datelor publice vizând universul fictiv „Războiul stelelor” (Star Wars)
colecții de resurse: Planets, Spaceships, Vehicles, People, Films, Species
![Page 109: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/109.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 3
Accesarea datelor publice vizând universul fictiv „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 110: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/110.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare{
"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 111: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/111.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 4
Preluarea datelor despre artefacte culturale oferitede Metropolitan Museum of Art
metmuseum.github.io
disponibile liber sub licența Creative Commons Zero
Objects – colecții de resurseObject – include (meta-)date de interes
Departments – lista departamentelor muzeului
![Page 112: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/112.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 4
Preluarea datelor despre artefacte culturale oferitede Metropolitan Museum of Art
metmuseum.github.io
API-ul REST oferit poate fi accesat fără autentificarefolosind domeniul collectionapi.metmuseum.org
rezultatele interogărilor sunt disponibile în format JSON
parte componentă a inițiativei Google Arts & Cultureartsandculture.google.com
![Page 113: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/113.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 4
Preluarea datelor despre artefacte culturale oferitede Metropolitan Museum of Art
pasul #1:căutarea – cerere GET – unor resurse de interes
collectionapi.metmuseum.org/public/collection/v1/search?q=Romania
![Page 114: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/114.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 4
Preluarea datelor despre artefacte culturale oferitede Metropolitan Museum of Art
pasul #1:căutarea – cerere GET – unor resurse de interes
se obține o colecție JSON de identificatori – objectIDs
{ "total": 50, "objectIDs": [ 460405, 29327,…, 159148 ] }
![Page 115: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/115.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 4
Preluarea datelor despre artefacte culturale oferitede Metropolitan Museum of Art
pasul #2:accesul – cu GET – la datele vizând o resursă specifică
collectionapi.metmuseum.org/public/collection/v1/objects/460405
objectID
![Page 116: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/116.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 4
Preluarea datelor despre artefacte culturale oferitede Metropolitan Museum of Art
pasul #2:accesul – cu GET – la datele vizând o resursă specifică
rezultatul reprezintă un obiect JSON încapsulând diverse (meta-)date furnizate de proprietăți: imagini ale
artefactului (primaryImage, additionalImages), proveniența (country, state, region, city), clasificarea (classification),…
![Page 117: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/117.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 3câmpurile-antet ale cererii HTTP:
Accept: application/json,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en,en-GB;q=0.5
Connection: keep-alive
Host: collectionapi.metmuseum.org
User-Agent: Mozilla/5.0 … Gecko/20100101 Firefox/75.0
câmpurile-antet ale răspunsului furnizat de API:
Access-Control-Allow-Origin: *
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Date: Mon, 27 Apr 2020 10:38:18 GMT
Transfer-Encoding: chunked
X-CDN: Incapsula
(meta-)date oferite de
serverul Web
![Page 118: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/118.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: implementare – exemplul 3
răspunsul JSON întors de serviciul Web apelat
![Page 119: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/119.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 120: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/120.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: dezvoltare – exemplificări
Micro-framework-uri PHP populare:
Fat-Freefatfreeframework.com
Lumenlumen.laravel.com
Slimwww.slimframework.com
Silersiler.leocavalcante.dev
avansat
![Page 121: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/121.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
Express, LoopBack, Restify, Sails, Superagent (Node.js)www.npmjs.com/search?q=REST&ranking=popularity
JAX-RS (Java API for RESTful Web Services)github.com/jax-rs
Restlet (Java)restlet.com/open-source/
avansat
![Page 122: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/122.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
rest: dezvoltare – exemplificări
Cornice, Django, Eve, Pecan (Python)
Grape, RESTRack, Ruby on Rails (Ruby)www.ruby-toolbox.com/categories/API_Builders
RestKit (framework Objective-C pentru macOS + iOS): github.com/RestKit/RestKit
a se consulta și github.com/marmelab/awesome-rest
avansat
![Page 123: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/123.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:Amazon, Coronavirus APIs, eBay, Facebook, FitBit, GitLab,
Google, ISBNdb, LinkedIn, Microsoft, MusicBrainz, Open Banking Tracker, OpenStreetMap, PayPal, PostNL,
Quora, Tumblr, Vimeo, Wikidata,…
de explorat situl ProgrammableWebwww.programmableweb.com/category/all/apis
+lista API-urilor publice
github.com/abhishekbanthia/Public-APIs
![Page 124: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/124.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
studiu de caz: Groupon
avansat
![Page 125: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/125.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
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 126: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/126.jpg)
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 127: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/127.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi: exemplu – groupon
arhitectură eterogenăimplementări distincte în funcție de zona geografică
avansat
![Page 128: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/128.jpg)
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 129: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/129.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
arhitecturi: exemplu – grouponreproiectare
(~20 de aplicații Web distincte, independente)
avansat
![Page 130: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/130.jpg)
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)Descriere via OpenAPI Spec.
Suport pentru XML messaging Bazat pe URI + hipermedia
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 131: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/131.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/rezumat
dezvoltare de servicii Web via REST
⊷de la HTTP la metodologii, instrumente și exemple
![Page 132: Tehnologii Web - Alexandru Ioan Cuza University › ~busaco › teach › courses › ... · /bookmarks GET application/atom+xml Lista de utilizatori /users GET application/atom+xml](https://reader036.vdocuments.site/reader036/viewer/2022062603/5f0db6dd7e708231d43bb8cf/html5/thumbnails/132.jpg)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
episodul viitor: dezvoltarea de aplicații Web complexe: specificarea API-urilor, micro-servicii,
autentificare, autorizare, acces la date via GraphQL
arhitectură bazată pe servicii Web
arhitectură recurgând la micro-servicii
frontend (FE)
ser-vice
ser-vice
ser-vice
DB
client
ser-vice
DB
FE FE FE
client
DB
ser-vice
ser-vice
DB