Presentation laddar. Vänta.

Presentation laddar. Vänta.

REST i Ladok3 Jan Stenberg, Knowit Senior arkitekt i Ladok

Liknande presentationer


En presentation över ämnet: "REST i Ladok3 Jan Stenberg, Knowit Senior arkitekt i Ladok"— Presentationens avskrift:

1 REST i Ladok3 Jan Stenberg, Knowit Senior arkitekt i Ladok3 2013-10-23
Detta blir lite tekniskt, jag försöker hålla presentationen på en konceptuell nivå, men det rör ett tekniskt ämne. Jan Stenberg, Knowit Senior arkitekt i Ladok3

2 Agenda Introduktion Bakgrund Valet av REST för Ladok3 REST-principer
REST i Ladok3 Ladok3:s arkitektur Exempel, REST - Ladok3 Summering

3 Introduktion Ladok3 har valt REST Ett gemensamt gränssnitt för Ladok3
Externt och internt Användargränssnitt Webbaserat mot användare, REST internt Web API för lärosäten Vi har valt REST och jag återkommer till varför. REST är inte ett protokoll, det är egentligen en arkitekturell stil, som syns i gränssnittet.

4 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. RESTful betyder att vi kan beskriva processen eller ett flöde, jämför t.ex. med när du handlar på webben och styrs av websiten genom betalprocessen. Det klarar inte WSDL eller WADL, de beskriver enbart enskilda operationer.

5 Valet av REST för Ladok3 REST har många fördelar Och få nackdelar
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) En nackdel vs. WS är att man med WS enkelt skapar kommunikationen. Men vi vill egentligen inte heller göra det, eftersom det skapar beroenden mellan klient och server.

6 Förändringar mot dagens Ladok
Webb LW - utdata Webbgränssnitt för administratör Webbkomponenter TG – portlets Studentgränssnitt Tjänstegränssnitt T – SOAP LP – Ping REST SQL Direkta DB frågor/uppdateringar SQL (enbart för läsning) Enbart i Uppföljning

7 Webben som applikationsplattform
Världens största distribuerade informationssystem ”Alla” plattformar Prestanda Stateless - lätt att replikera Skalbarhet - Internet-scale Löst kopplat, allt måste inte vara igång Ladok3:s plattform (idémässigt)

8 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 Webben består av tre huvudkomponenter: URL:er, HTTP och HTML I princip behöver inte webben och REST använda http men vi förutsätter att http är vårt protokoll. HTTP är ett applikationsprotokoll för distribuerade hypermedia-baserade informationssystem. HTTP är basen för datakommunikation på World Wide Web. Ett applikationsprotokoll betyder att det inte bara transporterar data, det stödjer också att en klient vill göra något.

9 HTTP-meddelanden Request:
Header: GET /studiedeltagande/student/... HTTP/1.1 Accept: application/vnd.ladok+xml Response: Header: Body: HTTP/ OK Content-Type: application/vnd.ladok+xml Date: Wed, 23 Oct :45:44 GMT <?xml version="1.0" encoding="UTF-8"?> ... Frågan saknar ”body” för vi skickar inte in något data, vi frågar efter något.

10 HTTP-metoder GET POST PUT DELETE 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” Andra verb är bland andra HEADER och OPTIONS ”Utan sidoeffekter” betyder att man kan återupprepa utan att det gör något.

11 Statuskoder HTTP/ 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

12 REpresentional State Transfer
UNIVERSITY OF CALIFORNIA, IRVINE Architectural Styles and the Design of Network-based Software Architectures DISSERTATION submitted in partial satisfaction of the requirements for the degree of DOCTOR OF PHILOSOPHY in Information and Computer Science by Roy Thomas Fielding 2000 Begreppet REST kommer från en doktorsavhanldling av Roy Fielding, 2000 REST är inte ett protokoll, det är en arkitekturell stil.

13 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 Det här den vanliga webben. Webbplatsen leder mig, och styr mig. Det är precis det vi vill uppnå med ett REST-baserat gränssnitt, för datorer.

14 Resurs Vad som helst i ett system som en konsument kan interagera med: Information Dokument Webbsidor Kurs Kaffemaskin Transaktioner Avstånd mellan två punkter

15 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/4b5c c9a66 uuid: 4b5c0410-a68c-11e2-9e c9a66 Adressen i webbläsaren. I detta sammanhang är URI = URL

16 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

17 Exempel på representationer
<Student> <Uid> c39-11e c9a66</Uid> <Personnummer> </Personnummer> <Efternamn>Ålandsson</Efternamn> <Fornamn>Örjan</Fornamn> </Student> { "Uid":" c39-11e c9a66", "Personnummer":" ", "Efternamn":"Ålandsson” "Fornamn":"Örjan" } Två exempel på representation av samma resurs men i två olika format. XML överst JSON underst

18 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 Ett studiedeltagande rör en student och ett kurstillfälle, och indirekt också en kurs. Man kan göra registreringar, avbrott, återbud, osv. <Studiedeltagande> <link uri="http://api.ladok.se/studentinformation/student/d22…ef03" /> </Studiedeltagande>

19 Hypermedia Hypermedia = länkar mellan information/media
Länkar skapar ett hypermedia-format HATEOAS Hypermedia 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

20 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> Relationer gör att klienten kan förstå vad en länk betyder.

21 Exempel på relationer Standard-relationer, IANA Link Relations registry self previous, next payment Ladok3-specifika Relationer är konstanta strängar. Utformas de som url:er kan de användas i dokumentations-sammanhang. Samma princip med url:er gäller för namespaces i XML-scheman.

22 Exempel url: http://api.ladok.se/antagning/… Antagning
rel: registrering url: url: Skapar Deltagande rel: avbrott url:

23 Mediatyper Mediatypen beskriver format på en representation process-modellen, vad en klient kan göra för ett specifikt representations-format text/html, image/jpeg Ladok3 har två mediatyper: application/vnd.ladok+xml application/vnd.ladok+json

24 Relationer, länkar och mediatyper
<Studiedeltagande> <link rel="student” uri="http://api.ladok.se/studentinformation/student/d22…ef03” mediaType=”application/vnd.ladok+xml” /> </Studiedeltagande> 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?

25 Kontrakt Domain Application Protocol, DAP http://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 Beskriver rollen för länkade resurser http-verben Manipulerar resurser som ingår i protokollet Vårt domänspecifika protokoll, för Ladok3

26 RESTful REST – Fullt ut Human-webb – REST API Utforskande
Klienten behöver inte känna till url:er Klienten kan upptäcka nya relationer Vad betyder allt detta? Det här tror jag är det viktigaste. RESTful betyder att vi kan beskriva processen eller ett flöde, jämför t.ex. med när du handlar på webben och styrs av websiten genom betalprocessen.

27 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

28 Exempel Prata REST med Ladok3

29 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

30

31

32 <Domänhändelse> StudentEtablerad
Arkitektur för Ladok3 Studenter Examen api.ladok.se Deltagande Utbildningar <Domänhändelse> StudentEtablerad Ladok3 Resultat Behörighet

33 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 Via Shibboleth Via certifikat Behörighet sätts utifrån klient. Behörighet administreras i Ladok3

34 Referenser Böcker RESTful Web APIs REST in Practice
För de teknikintresserade

35 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

36 Frågor? ?


Ladda ner ppt "REST i Ladok3 Jan Stenberg, Knowit Senior arkitekt i Ladok"

Liknande presentationer


Google-annonser