WebApi service part 2 Routning og Action Simpel test-client (javascript) Session og Application data.

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
C#: Udtryk og metoder. Indhold “With regards to programming statements and methods, C# offers what you would come to expect from a modern OOPL…” Udtryk.
CodeIgniter Database Brugerinput Form Validation 20101JFH.
ASP.NET Extensions Jakob Tikjøb Andersen
Hvordan man skriver koden.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable]
ASP.NET Cache, State DataGrid og Diagnostics. Agenda – ASP.NET Cache, State og Cookies ( 1 del ) –Cache –Static member –Application State –Session State.
Dag 2 varekatalog Broadcast: session-id (samme session-id hver gang) Formiddagens arbejde:
Masterpages/Otto Knudsen 1 Master Pages Master Pages i ASP.NET 2.0.
Eksekvering/Otto Knudsen 1 Udrulning Publicering af en web-applikation.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
18 – Java Server Faces. 2 NOEA2009Java-kursus – JSF 2 Web-applikationer - 1 Brugere interagerer med en Web-browser Browseren sender forespørgsler til.
H:\ public_html \ gwd \ oevelse_x \
Stig Irming-Pedersen ASP.NET MVC Partner Copenhagen Software.
AJAX/Otto Knudsen 1 AJAX Motivation Definition. AJAX/Otto Knudsen 2 Motivation En typisk web-applikation er synkron klienten sender en forespørgsel og.
Program Design – 4 Introduktion til PHP. Dagens lektion Hvad er PHP?  - og lidt historie Hvordan virker PHP? Grundlæggende PHP  Variable  Typer  Løkker.
Intro Evaluering De sidste to gange?. HTTP, cookies og sessions Forelæsning nr 10 Tilbage til trafikken mellem server – client Sende HTTP-request og respons.
JavaScript i externe filer JavaScript gemmes i en ekstern fil (myscripts.js ) og så hentes ind i dokument hvor de skal bruges med, svarende at koden var.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Masterpages/Otto Knudsen 1 Navigation på webstedet Kontroller til navigation mellem siderne på webstedet.
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
Tina Ratzer Hendes hjemmeside skal indeholde: Kontakt Forhandlerliste
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Intro Evaluering De sidste to gange?. HTTP, cookies og sessions Forelæsning nr 10 Tilbage til trafikken mellem server – client Sende HTTP-request og respons.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
DB analyse og modellering Jesper Tørresø DAB1 F Februar 2008.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
OPERATIONEL ANALYSE AF WEBADFÆRD OAW – LEKTIONSGANG 4.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2002Objektorienteret systemudvikling1.1 Objektorienteret design Persistens - introduktion.
ANALYSE AF WEBADFÆRD - OAW OAW – LEKTIONSGANG 4. ANALYSE AF WEBADFÆRD - OAW SUMMARY, LECTURE 3 (Extended) Common Log File Format Host, Ident, Authuser,
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Mikkel deMib Svendsen Duplicate Content & Multiple Site Issue Mikkel deMib Svendsen
Omsætning af en model til en RDB Jesper Tørresø DAB1 F Marts 2008.
Ole Kjeldsen Direktør, Platform & Udviklere Microsoft Danmark … a.k.a. Software + Services Hvorfor, Hvordan &
Programmering I Java/C# Datatekniker Dit første projekt.
Web- og serverprogrammering Dette materiale er under Åben Dokumentlicens, se dag 9 AHAH - Asynkron HTML og HTTP.
IT i danskundervisningen Sydfalster Skole den 15.5 Kort om blogs – igenigen! SMS-noveller (sprog og kommunikation) Skriftlighed og IT Mundtlighed og IT.
Database Some walk through lv/ Figures & some text from: © Pearson Education Limited 1995,
Solution Makers A/S – Gruppe 4 Lars Wolter Nils Martinsen Rasmus Seye Tobias Kjeldsen 1.
Windows PowerShell Ikke kun for windows.
Don’t be afraid of the advanced editor
ISS webserver og web applikationer
WebApi service x.
1587 Server - Blandet miljø Webintegrator HF1
”Avanceret” Programmering
DB analyse og modellering
Software Testing Software testing.
GUIDE TIL BRUGEN AF FÆLLESMATERIALER (LÆRER)
1587 Server - Blandet miljø Webintegrator HF1
Simpel test-client (javascript) Session og Application data
Sikker adfærd er vigtig - Som sundhedspersonale arbejder vi med personoplysninger og oplysninger der skal behandles fortroligt, og dem skal vi passe godt.
CMS – Inner Wheel Danmarks hjemmesider
Danish TUC portal for training
The US-China trade war and its consequences
Præsentationens transcript:

WebApi service part 2 Routning og Action Simpel test-client (javascript) Session og Application data

Routning – reduceret med parametre Routning binder uri adressen med controler. Default giver også mulighed for positionsbestemte parametre I stedet for at kalde: api/Student?id=1 Kan man angive denne sådan: api/Student/1 Se mere her :

Routning med action Hvis man har konflikter med flere metoder der har samme type og parametre (fx GET) eller blot gerne vil angive metoden kan man ændre routningen (inde i WebApiConfig.cs) til følgende: routeTemplate: "api/{controller}/{action}/{id}” Nu kan uri adressen så se sådan ud: api/student/getStudent/1 Hvor metoden i WebApi controleren Student der kaldes er GetStudent med id=1 som parameter. Se mere her :

Med ActionName kan man angive at action er et andet navn end metodenavnet. Hvis man bruger standart navne Get, Put, Post og Delete som metodenavne kan det være en god idé public class StudentController : ApiController { [HttpGet] // hjælp til routning hvis metode ikke starter med Get [ActionName("GetStudentByID")] public Models.Student GetStudent (int id) { ………………………………………….. } [HttpGet] // hjælp til routning hvis metode ikke starter med Get [ActionName("GetStudentByAge")] public Models.Student[] GetStudentAge (int age) { ………………………………………….. } Se mere her :

Testing WebApi with simple javascript in html file // Testing of WebApi services // Place this content in a HTML page on the website with you WebApi services // Running in Internet Explorer you might also debug it function WebApiRequest(apiUri, requestType, httpBodyTxt) { // apiUri : WebApi fx " or "/api/Regne?a=5&b=7" // requestType : "GET", "POST", "PUT" or "DELETE" // httpBodyTxt : "data {'Id':2, 'Name':'My New Name'}" document.writeln(requestType + " request " + apiUri + " ") // alert(requestType + " request" + apiUri); httpReq = new XMLHttpRequest(); httpReq.onloadend = onloadend_action; // set callback function httpReq.open(requestType, apiUri, false); // here synchronous httpReq.setRequestHeader("Content-Type", "application/json"); httpReq.send(httpBodyTxt); //Async callback function function onloadend_action() { var responseTxt = httpReq.responseText; document.writeln("response: " + responseTxt+" ") // alert("response:\r\n" + responseTxt); } // Continue on next slide

Testing WebApi with simple javascript in html file // Continue from previous slide // main function /global - her you make your call for testing your WebApi // Insert your test for WebApi here - must be on same site as this html-script-file //Ecamples of call // WebApiRequest(" "GET", "json", null); WebApiRequest("api/Regne?a=5&b=7", "GET", null); document.writeln(" Begin of test 4 ") WebApiRequest("api/Student?id=1", "GET", null); document.writeln(" Begin of test 5 ") WebApiRequest("api/Student?id=1", "PUT", "{'Id':2, 'Name':'My New Name'}"); document.writeln(" End of test ")

Session i WebApi Som udgangspunkt bør man lade WebApi services være stateless. I forbindelse med at vi ikke ønsker at gemme i en database i undervisningen, men blot holde data i ram, kan vi dog have glæde at Session også til WebApi. Det bliver mere aktuelt når vi skal lave Web UI (MVC), men så kender du det allerede fra WebApi. Det kræver dog lige for WebApi en tilpasning i Global.asax

Tilgang til Session og Application objekterne For at tilgå Session og Application skal vi først have fat på HttpContext. Denne er direkte tilgængelig i WCF men i WebApi skal den hentes fra Request klassen. var httpContext = Request.Properties["MS_HttpContext"] as System.Web.HttpContextWrapper; Du har nu adgang med httpContext.Session httpContext.Application Du kan bruge Session objektet til at gemme data for den enkelte klient og Application til data fælles for alle klienterne. Begge giver mulighed for gemme data med en key. Der kræves ikke serialisering da data er i ram.

HttpContext var httpContext = Request.Properties["MS_HttpContext"] as System.Web.HttpContextWrapper; if (httpContext.Application != null) { try { httpContext.Application.Lock(); if (httpContext.Application["TEST"] == null) ………………………………………. } finally { httpContext.Application.UnLock(); } Hvis du skal have adgang til Application bruges HttpContext Der ikke er tilgængelig direkte i controleren, men kan tilgås som vis her. Husk at låse på Application ved tilgang og ændring. Husk UnLock i finally for at sikre det altid sker Undgå at gemme mange data direkte i Application men lav din egen klasse til disse. Fx lav en klasse for en samling objekter, hvor låsning så sker her. Således at Application låses mindst muligt. Overvej brug af Static data frem Application. Husk også at REST / Web API bør som udgangspunkt være stateless I undervisningssammenhæng vil vi dog vælge data i memory for ikke også at skulle inddrage databaser hver gang – så vi kan holde fokus