ASP.Net Web API

ASP.Net Web API

ASP.Net Web API 1 [email protected] מה זה Web API ? Web API הוא API אותו מממש השרת והוא מחזיר לקליינט Data בלבד ולא View הבקשה והתשובה הן בפרוטוקול Http\Https הקליינטים של Web API יכולים להיות רבים : אפשר להשתמש גם בASP.Net MVC להחזיר Desktop Http\Https Application לקליינט Data אבל WEB API יותר מתאים ונוח Mobile App Server Web API Web Client Data 2 [email protected] דוגמאות ל Web API דוגמאות ידועות ל Web API : /https://jsonplaceholder.typicode.com ● https://openweathermap.org/api ● /https://developers.google.com/maps ● https://developers.facebook.com/docs/graph-api ● ● ועוד רבים 3 [email protected] ASP.Net Web API Microsoft מאפשרת לנו לכתוב שרת אשר מממש Web API כך שקליינטים יוכלו לפנות אליו ולקבל מידע התשתית שמאפשרת זאת נקראת ASP.Net Web API התשתית הזו מאוד דומה ל ASP.Net MVC ההבדל המרכזי הוא ש ASP.Net MVC יכול להחזיר View ויכול להחזיר Data ואילו ASP.Net Web API יכול להחזיר רק Data 4 [email protected] מה זה REST ? REST הוא ראשי תיבות של - Representational State Transfer REST הוא architectural pattern ליצירת API שמשתמש ב HTTP לתקשורת REST הומצא בשנת 2000 REST נמצא בשימוש רוב האתרים שחושפים WEB API 5 [email protected] דוגמא לשימוש בREST עבור אתר הבלוגים שלנו Resource HTTP method Expected output Response Code OK/200 החזרת רשימת כל הבלוגים api/blogs GET/ Created/201 יצירת בלוג חדש api/blogs POST/ No Content or 200/OK/204 עדכן מידע בלוג קיים שהid הוא api/blogs/73 PUT 73/ No Content or 200/OK/204 מחק בלוג קיים שהid הוא api/blogs/73 DELETE 73/ OK/200 החזרת מידע בלוג שהid שלו הוא api/blogs/73 GET 73/ נובע מrouting עם api טבלה בעזרתה אפשר לממש controller .CRUD בשם את המידע עובר ב PUT/POST אפשר BlogsController כאשר id לא נמצא מחזירים להעביר כ querystring שנוסף ל url או ב body של הrequest 404/Not Found 6 [email protected] שימוש ב ASP.Net Web API נוסיף ספריה api תחת ספרית Controllers של פרויקט קיים של ASP.Net MVC. לצורך הדוגמה נוסיף את זה לפרויקט בלוגים שעשינו בפרק "ASP.Net MVC + Entity Framework" (יש להסיר את השדות עם virtual ב Models) נסמן את הספריה api ומקש ימני Add->Controllers->Web API 2 Controller - Empty שימו לב שמלבד הcontroller נוסף בין השאר WebApiConfig.cs שמגדיר את הrouting עבור הWeb API שימו לב שהrouting לא כולל Action !!!! למרות זאת נראה בהמשך שaction מתאים יקרא בהתאם ל http methodומספר הארגומנטים לaction 7 [email protected] תוספות פעם בפרויקט לאחר הוספת web api controller The Global.asax.cs file in the project may require additional changes to enable ASP.NET Web API. 1. Add the following namespace references: using System.Web.Http; using System.Web.Routing; 2. If the code does not already define an Application_Start method, add the following method: protected void Application_Start(){} 3. Add the following lines to the beginning of the Application_Start method: לאחר הוספת ה controller מקבלים GlobalConfiguration.Configure(WebApiConfig.Register); README ויש לבצע את ההוראות הרשומות להלן 8 [email protected] להוסיף במידה ויש בעיית גישה מדפדפן מקומי לשרת מקומי PM > Install-Package Microsoft.AspNet.WebApi.Cors לעשות ב Package Manager Console var cors = new EnableCorsAttribute("*", "*", "*"); לעשות בפונקציה Register של המחלקה config.EnableCors(cors); WebApiConfig ראה מקור 9 [email protected] דוגמה ל Web API דוגמא לWEB API עבור אתר בלוגים מופיע כאן https://github.com/NathanKr/VS2015GitRep/tree/master/Telrad/Web/ASP.net/EF_ with_MVC/BlogsMVC_EF תחת ספרית Controllers יש ספרית api ושם יש BlogsController שיורש את ApiController ניתן לגשת אליו גם מPostman וגם מקליינט של Angular 2 וגם מקליינט של Ionic 2 כרגע צריך לשים את המידע של PUT|POST בquerystring וזה עובד יפה אם הaction של PUT|POST מקבל אוביקט לדוגמא Blog אז אפשר בpostman להעביר אותו ב body->raw->JSON (application/json) 10 [email protected] קריאת כל הבלוגים // /api/blogs [HttpGet] public IEnumerable<Blog> GetBlogs() { return m_db.Blogs; } 11 [email protected] קריאת בלוג אחד // GET /api/blogs/1 [HttpGet] public IHttpActionResult GetBlog(long id){ Blog blog = m_db.Blogs.Find(id); if (blog == null){ return NotFound(); } return Ok(blog); } 12 [email protected] יצירת בלוג // POST /api/blogs [HttpPost] public IHttpActionResult CreateBlog(string title,string description){ מאפשר גישה דרך if (!validationIsOk(title,description)){ return BadRequest();} querystring ב request Blog blog = new Blog { Title = title , Description = description }; m_db.Blogs.Add(blog); m_db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { id = blog.Id }, blog); } 13 [email protected] יצירת בלוג - גישה שניה // POST /api/blogs העברת אוביקט מסוג [HttpPost] public IHttpActionResult CreateBlog(Blog blog){ Blog מאפשרת השמתו ב request ב body כאוביקט if ((blg != null) && !validationIsOk(blog.Title, blog.Description)){ JSON אבל לא כquerystring return BadRequest(); } m_db.Blogs.Add(blog); m_db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { id = blog.Id }, blog); } 14 [email protected] עריכת בלוג // PUT /api/blogs/4 -> update blog with id 4 [HttpPut] public IHttpActionResult UpdateBlog(long id, string title,string description){ מאפשר גישה דרך if (!validationIsOk(title,description)){ return BadRequest();} querystring ב request Blog blog = m_db.Blogs.Find(id); if (blog == null){ return NotFound();} blog.Title = title;blog.Description = description; m_db.SaveChanges(); return StatusCode(HttpStatusCode.NoContent); } 15 [email protected] עריכת בלוג - גישה שניה // PUT /api/blogs/4 -> update blog with id 4 [HttpPut] public IHttpActionResult UpdateBlog(long id,Blog blg){ העברת אוביקט מסוג Blog מאפשרת השמתו ב request if ((blg != null) && !validationIsOk(blg.Title, blg.Description)){return BadRequest();} בbody כאוביקט JSON אבל לא כif (id != blg.Id){return BadRequest();} querystring Blog blog = m_db.Blogs.Find(blg.Id); if (blog == null){return NotFound();} blog.Title = blg.Title;blog.Description = blg.Description; m_db.SaveChanges(); return StatusCode(HttpStatusCode.NoContent); } 16 [email protected] מחיקת בלוג // DELETE /api/blogs/4 -> delete blog with id 4 [HttpDelete] public IHttpActionResult DeleteBlog(long id){ Blog blog = m_db.Blogs.Find(id); if (blog == null){ return NotFound(); } m_db.Blogs.Remove(blog); m_db.SaveChanges(); return Ok(blog); } 17 [email protected] .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    17 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us