در این بخش آموزش mvc در خصوص عملیات CRUD توضیح خواهیم داد.
عملیات CRUD با ASP.NET Web API بخش اول آموزش عملیات CRUD با Web API که در ASP.NET MVC آموزش خواهیم داد.ما سه بخش در این سری مقاله را در MVC پیش گرفتیم پیشنهاد میکنم همراه ما باشید.
یک پروژه آموزشی عملیات CRUD با Web API را ایجاد خواهیم کرد و در مقاله ی بعدی، یعنی بخش دوم، آن را در برنامه های وب ASP.NET MVC استفاده خواهیم کرد.
در این مقاله، در رابطه با این موارد پایه خواهید آموخت و پاسخ خواهید گرفت و سپس در این آموزش، یک WEB API نمونه ایجاد خواهیم کرد.
- ASP.NET Web API چیست؟
- کنترل کننده ی MVC و کنترل کننده ی API
- کد کنترل کنندهی پیش فرض API
- مسیریابی (روتینگ) ASP.NET Web API چیست؟
- HttpResponseMessage چیست؟
- FROMURI و FROMBODY چیست؟
- پروژهی ایجاد Web API نمونه
- WebApiConfig.cs چیست؟
- نحوه ی بررسی Web API در مرورگر
- CRUD – Create Retrieve Update Delete (ایجاد، بازیابی، بروز رسانی، حذف)
مقالات بخش های بعدی از لینک های زیر در دسترس است :
- استفاده از Web API در ASP.NET MVC – بخش دوم
- به کارگیری ASP.NET Web API با استفاده از jQuery – بخش سوم
- عملیات CRUD با WebApi به زبان سی شارپ و ASP.NET MVC
Web API چیست ؟
API = Application Programming Interface (رابط برنامه نویسی کاربردی) ASP.NET Web API یک فریمورک است، که برای به اشتراک گذاری و جمع آوری داده ها ایجاد شده است.
Web APIها سرویس های HTTP RESTful هستند که میتوانند توسط سرویس گیرنده های مختلفی مانند دسکتاپ، تبلت و موبایل به کار گرفته شوند.
این را در نظر داشته باشید که ASP.NET Web API بر روی فریمورک .NET ایجاد شده است.
تعریف ویکیپدیا از WEB API اینگونه است که : یک رابط برنامه نویسی کاربردی برای یک سرویس دهنده ی وب یا یک مرورگر وب است.
لینک – http://en.wikipedia.org/wiki/Web_API
سرویس های RESTful – https://en.wikipedia.org/wiki/Representational_state_transfer
مرحله به مرحله عملیات CRUD با Web API
یک پروژه به نام MemberWebApiProject ایجاد کنید.
نکته
هنگام ایجاد پروژه های ASP.NET Web API، میتوانید مشاهده کنید که کادر تأیید (چک باکس) MVC به طور پیش فرض انتخاب شده است. حالا، صفحه ی شماباید به این شکل باشد.
کلاس کنترل کننده ی ASP.NET Web API از کلاس های ApiController (System.Web.Http.ApiController) و کلاس ASP.NET MVC از Controller(System.Web.MVC.Controller) ارث برده است.
Asp.net Web API با افعال HTTP زیر کار میکند:
حال نگاهی به کنترل کننده ی API خواهیم انداخت. بطور پیش فرض ValuesController.cs با متد زیر ایجاد میشود:
کد پیش فرض VALUESCONTROLLER.CS
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace MemberWebApiProject.Controllers { public class ValuesController : ApiController { //Return Collection of Values // GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; } //Return Value // GET api/values/5 public string Get(int id) { return "value"; } //Receive the value and post it // POST api/values public void Post([FromBody]string value) { } //Receive the value and update it // PUT api/values/5 public void Put(int id, [FromBody]string value) { } //Delete the value // DELETE api/values/5 public void Delete(int id) { } } }
ASP.NET Web API Routing – مسیریابی قراردادی
ASP.NET Web API از مسیریابی پشتیبانی میکند. مسیریابی Web API مشابه مسیریابی متد عملیاتی ASP.NET MVC است.
جهت پیکربندی یک مسیریابی جدید برای ASP.NET API یک فایل به نام “WebApiConfig.cs” وجود دارد که داخل پوشه ی App_Start در مسیر اصلی پروژه قرار گرفته است. شما میتوانید هرتعداد مسیریابی که پروژه تان نیاز داشته باشد در فایل webapiconfig.cs ایجاد کنید.
کدنویسی فایل WebAPIConfig.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace MemberWebApiProject { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes - To enable attribute base routing. config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } }
Attribute Routings
ASP.NET Web API از مسیریابی از نوع Attribute پشتیبانی میکند. مشابه و به آسانی مسیریابی که در متدهای عملیاتی کنترل کننده ی ASP.NET MVC انجام میدهیم است.
برای جزئیات بیشتر در ارتباط با مسیریابی قراردادی در مقابل مسیریابی Attribute، به لینک زیر مراجعه کنید.
کار با قابلیت Routing در MVC 5
FROMURI و FROMBODY چیست؟
FromUri و FromBody برای انتقال مقدار از سرویس گیرنده به سرویس دهنده استفاده میشوند.
در FromUri، Web API مقادیر داده ها را در رشته کوئری(query string) جستجو میکند در حالی که در FromBody مقدار داده ها را در بدنه ی درخواست (Request) جستجو میکند.
یک جدول، به نام tblMembers، در پایگاه داده ی خود ایجاد کنید.
/****** Object: Table [dbo].[tblMembers] Script Date: 30-Jul-18 8:01:53 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[tblMembers]( [MemberID] [int] IDENTITY(1,1) NOT NULL, [MemberName] [varchar](50) NULL, [PhoneNumber] [varchar](50) NULL, PRIMARY KEY CLUSTERED ( [MemberID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO
روی پوشه ی Models راست کلیک کنید و LINQ TO SQL Classes به نام MemberDataClasses.dbml را وارد کنید.
بر روی فایل MemberDataClasses.dbml دوبار کلیک کرده و CTRL+ALT+S (جستجوگر سرویس دهنده/Server Explorer) را فشار دهید.
پس از کلیک بر روی دکمه ی OK، جستجوگر سرویس دهنده ی شما به این شکل خواهد بود.
حال، جدول tblMembers را کشیده و در صفحه ی MemberDataClasses.dbml رها کنید.
حالا، بیایید یک کنترل کننده ی جدید ASP.NET Web API به نام MemberControllers ایجاد کنیم.
بر روی پوشه ی Controllers راست کلیک کرده و ADD –> NEW ITEM را انتخاب کنید یا CTRL+SHIFT+A را فشار دهید.
و (Web API Controller Class v2.1) را انتخاب کرده و نام “MemberController.cs” را به آن اختصاص دهید.
کد MemberController.cs
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using MemberWebApiProject.Models; namespace MemberWebApiProject.Controllers { public class MemberController : ApiController { //Create instance of Linq-To-Sql class as db MemberDataClassesDataContext db = new MemberDataClassesDataContext(); //This action method return all members records. // GET api/<controller> public IEnumerable<tblMember> Get() { //returning all records of table tblMember. return db.tblMembers.ToList().AsEnumerable(); } //This action method will fetch and filter for specific member id record // GET api/<controller>/5 public HttpResponseMessage Get(int id) { //fetching and filter specific member id record var memberdetail = (from a in db.tblMembers where a.MemberID == id select a).FirstOrDefault(); //checking fetched or not with the help of NULL or NOT. if (memberdetail != null) { //sending response as status code OK with memberdetail entity. return Request.CreateResponse(HttpStatusCode.OK, memberdetail); } else { //sending response as error status code NOT FOUND with meaningful message. return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Invalid Code or Member Not Found"); } } //To add a new member record // POST api/<controller> public HttpResponseMessage Post([FromBody]tblMember _member) { try { //To add an new member record db.tblMembers.InsertOnSubmit(_member); //Save the submitted record db.SubmitChanges(); //return response status as successfully created with member entity var msg = Request.CreateResponse(HttpStatusCode.Created, _member); //Response message with requesturi for check purpose msg.Headers.Location = new Uri(Request.RequestUri + _member.MemberID.ToString()); return msg; } catch (Exception ex) { //return response as bad request with exception message. return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex); } } //To update member record // PUT api/<controller>/5 public HttpResponseMessage Put(int id, [FromBody]tblMember _member) { //fetching and filter specific member id record var memberdetail = (from a in db.tblMembers where a.MemberID == id select a).FirstOrDefault(); //checking fetched or not with the help of NULL or NOT. if (memberdetail != null) { //set received _member object properties with memberdetail memberdetail.MemberName = _member.MemberName; memberdetail.PhoneNumber = _member.PhoneNumber; //save set allocation. db.SubmitChanges(); //return response status as successfully updated with member entity return Request.CreateResponse(HttpStatusCode.OK, memberdetail); } else { //return response error as NOT FOUND with message. return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Invalid Code or Member Not Found"); } } // DELETE api/<controller>/5 public HttpResponseMessage Delete(int id) { try { //fetching and filter specific member id record var _DeleteMember = (from a in db.tblMembers where a.MemberID == id select a).FirstOrDefault(); //checking fetched or not with the help of NULL or NOT. if (_DeleteMember != null) { db.tblMembers.DeleteOnSubmit(_DeleteMember); db.SubmitChanges(); //return response status as successfully deleted with member id return Request.CreateResponse(HttpStatusCode.OK, id); } else { //return response error as Not Found with exception message. return Request.CreateErrorResponse(HttpStatusCode.NotFound, "Member Not Found or Invalid " + id.ToString()); } } catch (Exception ex ) { //return response error as bad request with exception message. return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex); } } } }
HttpResponseMessage چیست؟
HttpResponseMessage روشی برای بازگرداندن یک پیام/داده از عملیات شماست.
وقتی اشاره گر را بر روی CreateResponse مربوط به Request نگه میدارید، میتوانید کادر توضیحات زیر را بر روی صفحه مشاهده کنید.
WebApiConfig.cs چیست؟
WebApiConfig.cs یک فایل پیکربندی برای تنظیم پیکربندی مربوط به Web API مانند مسیریابی، سرویس ها، و دیگر موارد است.
در کد پیکربندی Web API زیر، میتوانید ببینید که API به صورت پیشوند است. این کلمه ی API تمایزی بین مسیریابی عادی کنترل کننده و مسیریابی Web API ایجاد خواهد کرد.
- RouteConfig.cs برای Asp.net MVC Controller منحصر به فرد است.
- WebApiConfig.cs برای ASP.NET WebApi Controller منحصر به فرد است.
کد WebApiConfig.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; namespace MemberWebApiProject { public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes - To enable attribute base routing. config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } } }
چگونه Web API را در مرورگر بررسی کنیم؟
در اسکرین شات زیر، میتوانید URL برای بررسی Web API را مشاهده کنید.
localhost:52044/api/member : دریافت جزئیات تمام اعضا
در مقاله ی بعدی، نحوه ی فراخوانی و استفاده از یک Web API و متدهای عملیاتی آن را خواهید آموخت.
جهت دانلود سورس عملیات CRUD با WebApi به زبان سی شارپ و ASP.NET MVC میتوانید از این لینک استفاده کنید.و جهت دانلود سورس MVC از این لینک استفاده کنید.
دیدگاهها