عملیات CRUD با ASP.NET Web API – بخش اول

عملیات CRUD با Web API

عملیات 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 چیست ؟

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

عملیات CRUD با Web API

یک پروژه به نام MemberWebApiProject ایجاد کنید.

عملیات CRUD با Web API

عملیات CRUD با Web API

عملیات CRUD با Web API

عملیات CRUD با Web API

نکته

هنگام ایجاد پروژه‏ های ASP.NET Web API، می‏توانید مشاهده کنید که کادر تأیید (چک ‏باکس) MVC به طور پیش فرض انتخاب شده است. حالا، صفحه ‏ی شماباید به این شکل باشد.

عملیات CRUD با Web API

کلاس کنترل‏ کننده‏ ی ASP.NET Web API از کلاس ‏های ApiController (System.Web.Http.ApiController) و کلاس ASP.NET MVC از Controller(System.Web.MVC.Controller) ارث برده است.

Asp.net Web API با افعال HTTP زیر کار می‏کند:

عملیات CRUD با Web API

حال نگاهی به کنترل‏ کننده‏ ی 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 را وارد کنید.

عملیات CRUD با Web API

عملیات CRUD با Web API

بر روی فایل MemberDataClasses.dbml دوبار کلیک کرده و CTRL+ALT+S (جستجوگر سرویس دهنده/Server Explorer) را فشار دهید.

عملیات CRUD با Web API

عملیات CRUD با Web API

پس از کلیک بر روی دکمه ‏ی OK، جستجوگر سرویس ‏دهنده‏ ی شما به این شکل خواهد بود.

عملیات CRUD با Web API

حال، جدول tblMembers را کشیده و در صفحه ‏ی MemberDataClasses.dbml رها کنید.

عملیات CRUD با Web API

حالا، بیایید یک کنترل‏ کننده ‏ی جدید ASP.NET Web API به نام MemberControllers ایجاد کنیم.

بر روی پوشه ‏ی Controllers راست کلیک کرده و ADD –> NEW ITEM را انتخاب کنید یا CTRL+SHIFT+A را فشار دهید.

عملیات CRUD با Web API

و (Web API Controller Class v2.1) را انتخاب کرده و نام “MemberController.cs” را به آن اختصاص دهید.

عملیات CRUD با Web API

کد 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 نگه می‏دارید، می‏توانید کادر توضیحات زیر را بر روی صفحه مشاهده کنید.

عملیات CRUD با Web API

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 : دریافت جزئیات تمام اعضا

عملیات CRUD با Web API

در مقاله‏ ی بعدی، نحوه‏ ی فراخوانی و استفاده از یک Web API و متدهای عملیاتی آن را خواهید آموخت.

جهت دانلود سورس عملیات CRUD با WebApi به زبان سی شارپ و ASP.NET MVC میتوانید از این لینک استفاده کنید.و جهت دانلود سورس MVC از این لینک استفاده کنید.


زهره سلطانیان

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.