Web Api service x Web Api projekt ved
Web. Api service x
Web. Api projekt ved. NET fw 4. 5/4. 6 Afkryds Web. Api
Opret Web API controler (servicen) Denne kommer til at indeholde servicens metoder
Web API controleren Controleren indeholder metoderne Som udgangspunkt vil der være følgende typer, idet der kan være flere af en type: Lad metode starte med type, da det giver noget automatik i forhold til http request. • Get (Http. Get - hent data – typisk parameter i url / http header) • Put (Http. Put – opdater – typisk data i http body) • Post (Http. Put – opret – typisk data i http body) • Delete (Http. Put – slet - typisk parameter i url / http header) Flere Get eller Put efter hinanden skal typisk give samme effekt, hvorimod Post og Delete selvfølgelig efter hinanden vil virke forskelligt.
Implementer metoder service metoder i controleren public class Student. Controller : Api. Controller { [Http. Get] // hjælp til routning hvis metode ikke starter med Get public Models. Student Get. Student (int id) { ……………………. . } [Http. Get] // hjælp til routning hvis metode ikke starter med Get public IEnumerable<Models. Student> Get. All. Students() { ……………………. . } [Http. Put] // hjælp til routning hvis metode ikke starter med Put public bool Put. Student (int id, [From. Body] Models. Student student) //Update { ……………………. . } [Http. Post] // hjælp til routning hvis metode ikke starter med Post public bool Post. Student(Models. Student student) //Opret { ……………………. . } Bemærk der kan være flere metoder af samme type hvis de har forskellige parametre
Models indeholder data modellen namespace Web. Api. Application 01. Models { public class Student { public int Id { get; set; } public string Name { get; set; } } } Bemærk at det ikke er nødvendigt med Data. Contract eller anden markering for serialisering
Http. Context var http. Context = Request. Properties["MS_Http. Context"] as System. Web. Http. Context. Wrapper; if (http. Context. Application != null) { try { http. Context. Application. Lock(); if (http. Context. Application["TEST"] == null) ……………………. } finally { http. Context. Application. Un. Lock(); } } Hvis du skal have adgang til Application bruges Http. Context 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 Un. Lock 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
Test af Web API Get fra browser Start web applikationen op i den ønskede browser Hvis du ikke har sat Web. config til at tillade browsing får du en fejl, Men applikationen er nu kørende Get metoderne kan nu testes direkte fra browseren gennem uri adressen Standart efter serveradressen er /api/ efterfulgt af controlerens navn (uden Controler) efterfulgt af ? Og herefter paremetre med & i mellem Fx her: http: //localhost: 1762/api/Student? id=7 Der her giver svaret som json: {"Id": 7, "Name": "Student_7_name"}
Test af Web API med Fiddler Hvis du vil have json eller xml angiver du det som ekstra data i http headeren Content-Type: application/json eller Content-Type: application/xml Resultat her som json {"Id": 7, "Name": "Student_7_name"} Med Fiddler Composer kan du teste dine Web API metoder af mere avanceret Herunder bestemme om du vil have json eller xml. Du kan også her teste PUT, POST og DELETE og medsende data i http body
Opdatering (PUT) med Fiddler Her er der id som parameter i uri adressen og Json data (object) i http body
Brug af Web API i C# med brug af Web. Client Brug af Web. Client for at hente data fra Web API med GET metode System. Net. Web. Client web. Client = new System. Net. Web. Client(); web. Client. Headers["Content-Type"] = "application/json"; string uri. Adr = "http: //localhost: 1762/api/Student? id=7"; string response = web. Client. Download. String(uri. Adr); Brug af Web. Client for at opdatere data med Web API med PUT metode System. Net. Web. Client web. Client = new System. Net. Web. Client(); web. Client. Headers["Content-Type"] = "application/json"; string uri. Adr = "http: //localhost: 1762/api/Student? id=7"; string upload. Data = "{'Id': 7, 'Name': 'Student_7_name'}"; // Bemærk man kan bruge ' string response = web. Client. Upload. String(uri. Adr, ”PUT", upload. Data);
- Slides: 11