34
REST i Ladok3 » Jan Stenberg, Knowit » Senior arkitekt i Ladok3 2013-10- 23

REST i Ladok3

  • Upload
    fausto

  • View
    121

  • Download
    0

Embed Size (px)

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 Presentation

Citation preview

Page 1: REST i Ladok3

REST i Ladok3

» Jan Stenberg, Knowit» Senior arkitekt i Ladok3

2013-10-23

Page 2: REST i Ladok3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Exempel

» Prata REST med Ladok3

Page 29: REST i Ladok3

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

Arkitektur för Ladok3

Resultat

Studenter

Deltagande Utbildningar

Examen

Ladok3

Behörighet

<Domänhändelse>StudentEtablerad

api.ladok.se

Page 31: REST i Ladok3

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

Referenser

RESTful Web APIs

REST in Practice

Böcker

Page 33: REST i Ladok3

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

Frågor?

»?