dezvoltarea aplicațiilorwebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale...

176
Dr. Sabin Buragaprofs.info.uaic.ro/~busaco Dezvoltarea aplicațiilor Web servicii Web în stil REST Dr. Sabin Corneliu Buraga – profs.info.uaic.ro/~busaco/

Upload: others

Post on 18-Jan-2020

8 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Dezvoltarea aplicațiilor Web

⤄servicii Web în stil REST

Dr. Sabin Corneliu Buraga – profs.info.uaic.ro/~busaco/

Page 2: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

„Prima calitate a stilului este claritatea.”

Aristotel

Page 3: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Ce sunt serviciile Web?

Page 16: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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, OpenStreetMap etc.mesagerie instantanee – Snapchat, Telegram, Twilio

procesări – Amazon Rekognition, IBM Watson, Microsoft Azure Cognitive Services, Google TensorFlow…

realizare de statistici Web – e.g., Google Analyticsrețele sociale – Facebook Open Graph, LinkedIn, Twitter

spelling checking – Bing Spell Check, xSpell,…stocare de date – Amazon S3, Dropbox, OneDrive etc.

Page 19: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Cum am implementa un serviciu?

Page 22: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 hipermedia

Page 25: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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)tech.bellycard.com/blog/migrating-to-a-service-oriented-architecture-soa/

Page 42: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 43: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Există o modalitate pragmatică privinddezvoltarea și invocarea serviciilor Web?

Page 44: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 45: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

Roy Fieldingteză de doctorat, 2000 (University of California, Irvine)

www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm

Page 46: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 47: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 48: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 49: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 50: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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, 26 septembrie 2019www.iana.org/assignments/media-types/media-types.xhtml

Page 51: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

resursa

URI

reprezentare2

(JSON)reprezentare1

(HTML)

Page 52: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

resursa

URI

URLURL

reprezentare2

(JSON)reprezentare1

(HTML)

Page 53: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

pro

fs.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,…

resursa

URI

URLURL

GET POST GET DELETE

reprezentare2

(JSON)reprezentare1

(HTML)

Page 54: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Verbele (acțiunile) sunt stipulate de un protocol

Page 55: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

profs.info.uaic.ro/~busaco/teach/courses/web/web-film.html#week2

Page 56: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 57: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

HTTP/2.0

RFC 7540 (2015)

axat asupra performanței

http2.github.io

Page 58: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

HTTP/2.0

mesaje binare

reutilizarea conexiunii TCP (a single connection per host)

multiplexare (many parallel streams)

compresia anteturilor – HPACK

trimiterea mesajelor spre client (server push)

implementări: github.com/http2/http2-spec/wiki/Implementations

Page 59: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

HTTP/3.0

următoarea generație de protocol WebHTTP over QUIC – quicwg.org

recurge la QUIC (Quick UDP Internet Connections)propus de Google, actualmente în curs de

standardizare la IETF (Internet Engineering Task Force)

alte detalii: daniel.haxx.se/http3-explained/

Page 60: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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– siguranță (safe)

idempotență (idempotent) – cereri identice vor conduce la oferirea aceluiași răspuns (aceeași reprezentare)

Page 61: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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țiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

fullstack-developer.academy/restful-api-design-post-vs-put-vs-patch/

Page 68: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 69: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

HTTP/1.1 200 OK

Date: Web, 09 Oct 2019 07:03:52 GMT

Content-Type: application/json

Content-Length: 691

Connection: keep-alive

Server: Virtuoso/07.20.3232 (Linux) x86_64-generic-linux-glibc25

X-SPARQL-default-graph: http://dbpedia.org

Expires: Web, 09 Oct 2019 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 70: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 71: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 72: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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/edit

resursa4

reprezentare4

(Atom)

http://blog.info/stiri.xml

GET

GET

POST

Page 73: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 74: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 75: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 76: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Reprezentările de resurse pot fi stocate temporar

caching

Page 77: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 78: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 79: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 80: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 81: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest

Aplicația Web dezvoltată va fi stratificată

layered system

Page 82: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 83: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 84: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 85: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 86: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 87: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 88: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 89: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 90: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 91: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 92: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 93: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 94: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 95: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 96: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 97: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 98: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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.

Page 99: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: metodologie

Divizarea datelor problemei în categorii

cazuri concrete:SoundCloud – developers.soundcloud.com/docs/api/

Tracks Users Me Playlists Groups Comments

StackExchange – api.stackexchange.com

Answers Badges Comments Questions Revisions Tags Users

World of Warcraft – dev.battle.net/io-docs

Characters Guilds Realms Auctions Items

Page 100: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

Page 101: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

Page 102: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 103: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 104: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 105: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 – Yet Another Markup Language

Page 106: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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.”developer.github.com/v3/#hypermedia

Page 107: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 108: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

StrongLoop API (IBM)operații cu resurse specifice – aici Users

Page 109: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 110: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Aspecte practice de interes pentru dezvoltatori?

Page 111: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 112: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 113: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 114: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 115: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: privire pragmatică

Tratarea erorilor

mesajele întoarse trebuie să includă informații utile

GitHub – cod de stare HTTP oferit: 404{ "message": "Not Found",

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

versusNew York Times (Semantic API) – cod de stare HTTP: 401

{ "message": "No API key found in headers or querystring" }

Page 116: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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/

Page 117: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

în unele cazuri, folosind un antet propriu: X-API-Version

Page 118: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

https://roads.googleapis.com/v1/nearestRoads

https://ec2.amazonaws.com/?Action=RunInstances&Version=2016-11-15

Page 119: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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/

Page 120: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 121: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 122: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 123: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 124: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 125: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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

Page 126: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 (PHP7): docs.guzzlephp.org/en/stable/

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

http.client (Python 3): docs.python.org/3/library/http.client.html

Hyper Reqwest (biblioteci Rust):hyper.rs docs.rs/reqwest

Page 127: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

restify (framework Node.js): www.npmjs.com/package/restify

RestKit (macOS + iOS): github.com/RestKit/RestKit

RestSharp (pentru .NET): restsharp.org

Page 128: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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” (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 129: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

detalii la 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 130: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

Studiu de caz:preluarea datelor despre artefacte culturale oferite

de Metropolitan Museum of Artmetmuseum.github.io

disponibile liber sub licența Creative Commons Zero

Objects – colecții de resurseObject – include (meta-)date de interes

Page 131: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

Studiu de caz:preluarea datelor despre artefacte culturale

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 132: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

Studiu de caz:preluarea datelor despre artefacte culturale

pasul #1:căutarea – cerere GET – unor resurse de interes

collectionapi.metmuseum.org/public/collection/v1/search?q=Romania

Page 133: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

Studiu de caz:preluarea datelor despre artefacte culturale

pasul #1:căutarea – cerere GET – unor resurse de interes

se obține o colecție JSON de identificatori – objectIDs

{ "total": 47, "objectIDs": [ 98440, 32843,…, 730799 ] }

Page 134: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

Studiu de caz:preluarea datelor despre artefacte culturale

pasul #2:accesul – cu GET – la datele vizând o resursă specifică

collectionapi.metmuseum.org/public/collection/v1/objects/32843

objectID

Page 135: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: implementare

Studiu de caz:preluarea datelor despre artefacte culturale

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 136: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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/69.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: Web, 09 Oct 2019 10:38:18 GMT

Transfer-Encoding: chunked

X-CDN: Incapsula

Page 137: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 138: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 139: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 140: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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, 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/

Page 141: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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

micro-framework-uri PHP populare:Fat-Free – fatfreeframework.com

Lumen – lumen.laravel.com

Slim – www.slimframework.com

Siler – siler.leocavalcante.dev

a se consulta și github.com/marmelab/awesome-rest

Page 142: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

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

Ericsson, Facebook, GitHub, Google, ISBNdb, LinkedIn, Mastercard, Open Movie Database, Pipl, Quora, Tumblr,

Wikidata,…

de explorat situl ProgrammableWebwww.programmableweb.com/category/all/apis

+lista API-urilor publice

github.com/abhishekbanthia/Public-APIs

Page 143: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

Putea utiliza servicii Web (API-uri)pentru autorizare și autentificare?

Page 144: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autorizare

Etape esențiale:

obținere cheie de acces 🔑

autentificarea + autorizarea aplicației ⎆⧉

obținerea acordului utilizatorului ⌨⍝👀

apelarea funcționalităților serviciului (via API)

Page 145: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autorizare

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 146: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autorizare

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 dorit

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

Page 147: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autorizare

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 148: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autorizare

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

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

Page 149: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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 6749OAuth 1.0 (2010), OAuth 2.0 (2012)

oauth.net/2/

L. Spyna, An OAuth 2.0 Introduction for Beginners (2018):itnext.io/an-oauth-2-0-introduction-for-beginners-6e386b19f7a9

Page 150: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

securitatea datelor

autorizarea prin OAutha aplicației JS Bin

pentru a obține accesul la datele unui utilizator

deținute de GitHub

Page 151: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 152: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 153: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

oauth

Biblioteci (server și/sau client) disponibile pentru C, C++, Go, Erlang, Java, JavaScript, Objective-C, .NET,

Perl, PHP, Python, Ruby, Swift,…

oauth.net/code/

Page 154: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

oauth

Servicii proxy de autentificare/autorizare prin OAuth

Auth0 – auth0.com

Hydra – github.com/ory/hydra

OAuth – oauth.io

Okta – developer.okta.com

Page 155: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 156: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

oauth

Autorizare 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

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

Twitter – dev.twitter.com/oauth

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

Page 157: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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/

sesiunea curentă e păstrată într-un jeton (token) JSON

Page 158: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autentificare

Metode de autentificare:

bazate pe sesiunea Web via SID (Session IDentifier)

implicit, Web-ul e stateless

Page 159: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autentificare

Metode de autentificare:

folosind jetoane (tokens)

token based authentication

Page 160: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autentificare

Metode de autentificare:

fără parolă (passwordless)

one-time-use URL

exemplu: Tumblr

Page 161: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autentificare

Metode de autentificare:

SSO (Single Sign-On)

autentificarea utilizatorilor în cadrul mai multor aplicații înrudite

Page 162: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autentificare

Metode de autentificare:

autentificare socială via alte conturi de utilizator

de exemplu, via rețele sociale sau alte situri Web de încredere

Page 163: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autentificare

Metode de autentificare:

2FA (Two-Factor Authentication)

utilizatorul trebuie să ofere minim 2 probe (factors) referitoare la identitatea sa

cunoștințe ori obiecte deținute exclusiv de acea persoană

de studiat și TOTP (Time-Based One-Time Password Algorithm) – RFC 6238: tools.ietf.org/html/rfc6238

Page 164: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

rest: dezvoltare

autentificare multi-factor (2FA): twofactorauth.org

Page 165: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autentificare

Metode de autentificare:

autentificare biometrică

bazate pe amprentă (fingerprint recognition)recunoașterea facială sau a unor organe

scanarea ochiului (iris, retină)identificare vocală

analizarea codului genetic (DNA matching)

www.biometricsinstitute.org

Page 166: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autentificare

Metode de autentificare:

autentificare via dispozitiv hardware

exemplu tipic: smartcard

Page 167: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

autentificare

Metode de autentificare – privire de ansamblu:

bazate pe sesiunea Webfolosind jetoane (token based authentication)

fără parolă (passwordless)SSO (Single Sign-On)autentificare socială

2FA (Two-Factor Authentication)autentificare biometrică

autentificare via dispozitiv hardware

hackernoon.com/how-do-you-authenticate-mate-f2b70904cc3a

Page 168: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

openid

OpenID

manieră descentralizată de autentificare a utilizatoruluila nivel de Web pe baza paradigmei SSO

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 169: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

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 170: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

openid

OpenID Connect

oferă un nivel vizând identitatea utilizatorului (identity layer) pe baza protocolului OAuth 2

formatul de date folosit: JWT – JSON Web Tokenstandardizat de RFC 7519

openid.net/connect/

Page 171: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

openid

OpenID Connect

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

openid.net/developers/libraries/

Page 172: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

openid

OpenID Connect

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 173: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 174: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

Dr.

Sab

in B

ura

ga

profs.in

fo.uaic.ro/~busa

co

openid

În conjuncție cu JWT, a se considera specificațiileJOSE – JSON Object Signing and Encryption:

specificarea semnăturilor digitaleJWS – JSON Web Signature: tools.ietf.org/html/rfc7515

definirea metodelor criptograficeJWE – JSON Web Encryption: tools.ietf.org/html/rfc7516

reprezentarea cheilor criptograficeJWK – JSON Web Key: tools.ietf.org/html/rfc7517

identificarea & înregistrarea algoritmilor criptograficiJWA – JSON Web Algorithms: tools.ietf.org/html/rfc7518

Page 175: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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 176: Dezvoltarea aplicațiilorWebbusaco/teach/courses/wade/... · 2019-10-07 · ga .ro / ~ co nevoiale dezvoltatorilorWeb Soluții multi-platformă, slab-conectate integrare (în timp-real)

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ă