rest i ladok3
DESCRIPTION
REST i Ladok3. Jan Stenberg, Knowit Senior arkitekt i Ladok3. 2013-10-23. Agenda. Introduktion Bakgrund Valet av REST för Ladok3 REST-principer REST i Ladok3 Ladok3:s arkitektur Exempel, REST - Ladok3 Summering. Introduktion. Ladok3 har valt REST Ett gemensamt gränssnitt för Ladok3 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/1.jpg)
REST i Ladok3
» Jan Stenberg, Knowit» Senior arkitekt i Ladok3
2013-10-23
![Page 2: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/2.jpg)
Agenda
» Introduktion» Bakgrund» Valet av REST för Ladok3» REST-principer» REST i Ladok3» Ladok3:s arkitektur» Exempel, REST - Ladok3» Summering
![Page 3: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/3.jpg)
Introduktion
» Ladok3 har valt REST» Ett gemensamt gränssnitt för Ladok3
• Externt och internt• Användargränssnitt
o Webbaserat mot användare, REST internt• Web API för lärosäten
![Page 4: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/4.jpg)
Bakgrund
» Web Services, WS, var ett paradigmskifte när det kom» Vi gick från proprietära protokoll som DCOM, RMI och
CORBA, (som var standardiserade på papperet men inte i verkligheten), till integration med XML och standard-protokoll.
» Men…• WS använder bara en del av http-protokollet, för transport.• WS beskriver bara enskilda operationer.• Ger ett beroende mellan klient och server• REST kan beskriva ett flöde.
![Page 5: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/5.jpg)
Valet av REST för Ladok3
» REST har många fördelar• Plattformsoberoende• Lösa kopplingar• Skalbarhet, en eller flera servers• Enkelhet• Utvecklas snabbt mot att bli ”standard” för ett Web API
» Och få nackdelar• Relativt nytt• Vi kan inte automatgenerera kod för kommunikationen
» Inga reella alternativ, (SOAP, CORBA, DCOM, Java RMI)
![Page 6: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/6.jpg)
Förändringar mot dagens Ladok
Ladok Ladok3Webb• LW - utdata
Webb• Webbgränssnitt för administratör
Webbkomponenter• TG – portlets
Webb• Studentgränssnitt
Tjänstegränssnitt• T – SOAP• LP – Ping
Tjänstegränssnitt• REST
SQL• Direkta DB frågor/uppdateringar
SQL (enbart för läsning)• Enbart i Uppföljning
![Page 7: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/7.jpg)
Webben som applikationsplattform
» Världens största distribuerade informationssystem
» ”Alla” plattformar
» Prestandao Stateless - lätt att replikera
o Skalbarhet - Internet-scale
» Löst kopplat, allt måste inte vara igång
» Ladok3:s plattform (idémässigt)
![Page 8: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/8.jpg)
HTTP
» Hypertext Transfer Protocol» Protokollet för webben
• url• http• html
» Ett applikationsprotokoll, (inte bara ett transportprotokoll)» Header som beskriver ett meddelande» Body med själva meddelandet
![Page 9: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/9.jpg)
HTTP-meddelanden
GET /studiedeltagande/student/... HTTP/1.1Accept: application/vnd.ladok+xml
HTTP/1.1 200 OKContent-Type: application/vnd.ladok+xmlDate: Wed, 23 Oct 2013 14:45:44 GMT
<?xml version="1.0" encoding="UTF-8"?>...
Request:Header:
Response:Header:
Body:
![Page 10: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/10.jpg)
HTTP-metoder
» GET• Hämtar en representation av en resurs• Inga sidoeffekter, ”idempotent”
» POST• Skapar en ny resurs, utökar en resurs• Servern skapar URI• Skapar nya resurser
» PUT• Uppdaterar en känd resurs, ”idempotent”
» DELETE• Ta bort en resurs , ”idempotent”
![Page 11: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/11.jpg)
Statuskoder
» HTTP/1.1 200 OK» 1xx: Informational: Request received, continuing
process» 2xx: Success: The action was successfully received,
understood, and accepted» 3xx: Redirection: Further action must be taken in order
to complete the request» 4xx: Client error: The request contains bad syntax or
cannot be fulfilled» 5xx: Server error: The server failed to fulfill an
apparently valid request
![Page 12: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/12.jpg)
REpresentional State Transfer
UNIVERSITY OF CALIFORNIA, IRVINE
Architectural Styles and the Design of Network-based Software Architectures
DISSERTATIONsubmitted in partial satisfaction of the requirements for the degree of
DOCTOR OF PHILOSOPHYin Information and Computer Science
byRoy Thomas Fielding
2000
![Page 13: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/13.jpg)
Ett exempel
» amazon.com» Webbplatsen leder mig genom ett flöde när jag
lägger en order• Adress• Leveranssätt• Betalning• Sammanställning, lägg order
![Page 14: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/14.jpg)
Resurs
» Vad som helst i ett system som en konsument kan interagera med: Information• Dokument• Webbsidor• Kurs• Kaffemaskin• Transaktioner• Avstånd mellan två punkter
![Page 15: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/15.jpg)
Uniform Resource Identifier, URI
» Identifierar en resurs, skiljer en resurs från en annan» En resurs kan ha flera identifierare / URI:er» En URI kan också vara en adress till resursen, en URL,
som ger åtkomst till resursen» Exempel
https://api.ladok.se/utbildningsinformation/kurs/4b5c041-...-800200c9a66
uuid: 4b5c0410-a68c-11e2-9e96-0800200c9a66
![Page 16: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/16.jpg)
Representation
» En representation av tillståndet på en resurs vid en viss tidpunkt
» På webben utbyter man representationer, aldrig den underliggande resursen
» Formatet på en representation beror på klientens önskemål: html, xml, json, etc.
» En resurs har samma adress, URL, oberoende av typ av representation
![Page 17: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/17.jpg)
Exempel på representationer
<Student> <Uid>71391050-2c39-11e3-8224-0800200c9a66</Uid> <Personnummer>19820117-9283</Personnummer> <Efternamn>Ålandsson</Efternamn> <Fornamn>Örjan</Fornamn></Student>
{ "Uid":"71391050-2c39-11e3-8224-0800200c9a66", "Personnummer":"19820117-9283", "Efternamn":"Ålandsson” "Fornamn":"Örjan"}
![Page 18: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/18.jpg)
Länkar
» Länkar bygger upp webben» Representationer kan innehålla länkar, (URL:er)» Länkar pekar på andra resurser.
• I ett studiedeltagande finns en länk till studenten» Länkar visar på möjligheter för tillståndsförändringar» I REST är länkar opaka, dvs. de ska inte tolkas
<Studiedeltagande> <link uri="http://api.ladok.se/studentinformation/student/d22…ef03" /> …</Studiedeltagande>
![Page 19: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/19.jpg)
Hypermedia
» Hypermedia = länkar mellan information/media
» Länkar skapar ett hypermedia-format
» HATEOASHypermedia As The Engine Of Application State• En klient följer länkar som en tjänst levererar i representationer• Applikationen drivs framåt genom övergång från ett tillstånd till
ett annat• När applikationen når ett nytt tillstånd presenterar den vilka nya
tillståndsövergångar som är möjliga
![Page 20: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/20.jpg)
Relationer
» Ger semantik till en länk• Vad länken betyder• Varför en klient ska följa länken
<Studiedeltagande> <link rel="student” uri="http://api.ladok.se/studentinformation/student/d22…ef03" /> …</Studiedeltagande>
![Page 21: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/21.jpg)
Exempel på relationer
» Standard-relationer, IANA Link Relations registry• self• previous, next• payment
» Ladok3-specifika• http://relations.ladok.se/studiedeltagande/registrering• http://relations.ladok.se/studentinformation/student
![Page 22: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/22.jpg)
Exempel
Antagning
Deltagande
Skapar
url: http://api.ladok.se/antagning/…
rel: registreringurl: http://api.ladok.se/registrering/…
url: http://api.ladok.se/registrering/…
rel: avbrotturl: http://api.ladok.se/avbrott/…
![Page 23: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/23.jpg)
Mediatyper
» Mediatypen beskriverformat på en representationprocess-modellen, vad en klient kan göra
för ett specifikt representations-format
» text/html, image/jpeg
» Ladok3 har två mediatyper:
application/vnd.ladok+xmlapplication/vnd.ladok+json
![Page 24: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/24.jpg)
Relationer, länkar och mediatyper
Vad innebär länken:rel: VARFÖR vill jag komma åt den länkade resursen?uri: VAR finns resursen?mediaType: HUR ska jag tolka svaret?
<Studiedeltagande> <link rel="student” uri="http://api.ladok.se/studentinformation/student/d22…ef03” mediaType=”application/vnd.ladok+xml” /> …</Studiedeltagande>
![Page 25: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/25.jpg)
Kontrakt
» Domain Application Protocol, DAPhttp://schemas.ladok.se/dap• Utökar en mediatyp med applikationsspecifika värden på länk-
relationer• Begränsar http-protokollet
» Tre nyckelkomponenter• Mediatyp, ex: application/vnd.ladok+xml• Länk – relationer
o Beskriver rollen för länkade resurser• http-verben
o Manipulerar resurser som ingår i protokollet
![Page 26: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/26.jpg)
RESTful
» REST – Fullt ut» Human-webb – REST API» Utforskande
» Klienten behöver inte känna till url:er» Klienten kan upptäcka nya relationer
![Page 27: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/27.jpg)
REST i Ladok3
» RESTful – REST fullt ut• Använder HTTP som ett applikationsprotokoll• Hypermedia-drivet med länkar som leder klienten till
andra resurser och driver tillståndsförändringar
» DAP• Domain Application Protocol
![Page 28: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/28.jpg)
Exempel
» Prata REST med Ladok3
![Page 29: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/29.jpg)
Dokumentation
» Genereras maskinellt av tjänsterna » Kommer troligtvis att finnas både online och som
nedladdningsbar fil» Innehåller text och XML-scheman
https://www.mit.ladok.se/restdoc/resultat.html
![Page 30: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/30.jpg)
Arkitektur för Ladok3
Resultat
Studenter
Deltagande Utbildningar
Examen
Ladok3
Behörighet
<Domänhändelse>StudentEtablerad
api.ladok.se
![Page 31: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/31.jpg)
Multitenant
» En klient till en tjänst, vårt GUI eller ett system hos ett lärosäte jobbar i kontextet av ett lärosäte.• Autentisering som visar vilket lärosäte klienten tillhör
o Via Shibboletho Via certifikat
• Behörighet sätts utifrån klient.• Behörighet administreras i Ladok3
![Page 32: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/32.jpg)
Referenser
RESTful Web APIs
REST in Practice
Böcker
![Page 33: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/33.jpg)
Summering
» Den vanliga webben men med XML eller JSON som format och med relationer för att beskriva länkar
» Resurser» Representationer» Hypermedia
• Länkar• Relationer• Servern leder klienten
» Ger ett oberoende mellan klient och server» Plattformsoberoende, nu och i framtiden
![Page 34: REST i Ladok3](https://reader035.vdocuments.mx/reader035/viewer/2022081419/56816614550346895dd95f51/html5/thumbnails/34.jpg)
Frågor?
»?