استفاده کردن از متد POST در ASP.NET Web API

استفاده کردن از متد POST در ASP.NET Web API

در این پست از وبسایت پرووید در رابطه با استفاده کردن از متد POST در ASP.NET Web API صحبت خواهیم کرد.

در این قسمت از این آموزش از وبسایت پرووید در رابطه با استفاده کردن از متد Post که در قسمت های قبلی برای پروژه Web API پیاده سازی کردیم صحبت‌ خواهیم کرد. در قسمت قبلی دیدید که توانستیم از متد Get که در Web API وجود داشت را استفاده کرده و رکوردهای مربوط به دانش ‌آموزان را در یک View از ASP.NET MVC نشان بدهیم. و اما متد Post به منظور اضافه کردن یک رکورد جدید در دیتابیس استفاده می شود. همانطور که گفتیم در قسمت های قبلی از این آموزش این نوع از Action Method را در پروژه Web API خود و در StudentController ایجاد کردیم. برای مطالعه مطالب قسمت های قبلی از مطلب آموزش ASP.NET Web API  دیدن کنید. این کد در قسمت زیر نشان داده شده است.

public class StudentController : ApiController
{
    public StudentController()
    {
    }

    //Get action methods of the previous section
    public IHttpActionResult PostNewStudent(StudentViewModel student)
    {
        if (!ModelState.IsValid)
            return BadRequest("Not a valid model");

        using (var ctx = new SchoolDBEntities())
        {
            ctx.Students.Add(new Student()
            {
                StudentID = student.Id,
                FirstName = student.FirstName,
                LastName = student.LastName
            });

            ctx.SaveChanges();
        }

        return Ok();
    }
} 

بر اساس کد بالا و با استفاده از متد PostNewStudent است که request های HTTP Post request به شکل http://localhost:64189/api/student هندل خواهند شد. این نوع از request ها باعث درج شدن یک رکورد جدید در دیتابیس با استفاده از Entity Framework شده و سپس یک response با 200 Ok برگردانده می‌شود.

بسته ی آموزش ویدئویی ساخت Web API در ASP.NET Core 2.0

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی ساخت Web API در ASP.NET Core 2.0 دیدن کنید.

تصویر زیر ساختار پروژه ای را نشان می دهد که در قسمت های قبل با هم ایجاد کرده ایم. در ادامه باید فایلهای مورد نیاز خود را بسازیم.

همانطور که ممکن است خاطرتان باشد یک کلاس با نام StudentViewModel را قبلاً در فولدر Models ایجاد کردیم که آن را در قسمت زیر مشاهده می کنید.

public class StudentViewModel
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
        
    public AddressViewModel Address { get; set; }

    public StandardViewModel Standard { get; set; }
}

حال بیایید قدم به قدم اقدام به ساختن یک View در ASP.NET MVC کرده تا با استفاده از آن بتوانیم متد Post از Web API را مورد استفاده قرار داده و یک Student جدید ایجاد کنیم. در رابطه با ASP.NET MVC توصیه می کنیم که از آموزش کامل توسعه وب اپلیکیشن با ASP.NET MVC استفاده کنید.

قدم اول

در ابتدا نیاز به ساختن یک Action Method با نام create داریم که یک View را برای ما رندر کرده تا با استفاده از آن کاربر بتواند اطلاعات جدید مربوط به یک دانش آموز را وارد و سپس آن را Submit ‌کند.

بسته ی آموزش ویدئویی پیاده سازی Web API های Async در ASP.NET Core

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی پیاده سازی Web API های Async در ASP.NET Core دیدن کنید.

همانطور که خاطرتان هست در قسمت های قبلی کلاس StudentController را ساخته ایم که با استفاده از آن می توانیم یک لیست از اطلاعات دانش آموزان را نشان بدهیم. در ادامه یک Action Method با نام create را برای رندر کردن یک View به شکل زیر ایجاد می کنیم.

public class StudentController : Controller
{
    public ActionResult Index()
    {
        //consume Web API Get method here.. 

        return View();
    }

    public ActionResult create()
    {
        return View();
    }
}

پس از ساختن این Action Method بر روی آن راست کلیک کرده و گزینه Add View را انتخاب کنید. این موضوع باعث می شود تا پنجره Add View شبیه به تصویر زیر نشان داده شود.

برای Template از گزینه Create استفاده کرده و برای Model Class از گزینه StudentViewModel استفاده کنید و پس از آن بر روی دکمه Add کلیک کنید. این موضوع باعث می شود که یک فایل با پسوند cshtml و با نام create در درون فولدر Student که یک زیر فولدر از فولدر Views می باشد ساخته شود. کد مربوط به فایل create.cshtml را در قسمت زیر مشاهده می کنید. در رابطه با ASP.NET MVC می توانید از بسته ی آموزش ویدئویی ASP.NET MVC و Entity Framework در قالب پروژه استفاده کنید.

@model WebApiDemo.Models.StudentViewModel

@{
    ViewBag.Title = "Create New Student - MVC";
    Layout = "~/Views/Shared/_Layout.cshtml";
}



<h2>Create New Student</h2>



@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()
        


<div class="form-horizontal">
        


<hr />



            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        


<div class="form-group">
            @Html.LabelFor(model => model.FirstName, htmlAttributes: new { @class = "control-label col-md-2" })
            


<div class="col-md-10">
                @Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" })
            </div>



        </div>


       


<div class="form-group">
            @Html.LabelFor(model => model.LastName, htmlAttributes: new { @class = "control-label col-md-2" })
            


<div class="col-md-10">
                @Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" })
            </div>



        </div>


       


<div class="form-group">
            


<div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>


        </div>


    </div>


}


<div>
    @Html.ActionLink("Back to List", "Index")
</div>

در کدی که در قسمت بالا مشاهده می کنید Html.BeginForm باعث ساخته شدن یک تگ form در HTML می شود که به منظور Submit کردن یک HTTP Post request در زمان کلیک کردن بر روی دکمه Create خواهد شد.

حال می توانید پروژه را اجرا کرده و به آدرس http://localhost:64189/student/create بروید. این موضوع باعث می‌شود که تصویر زیر نشان داده شود که همان View ساخته شده می باشند.

حال به محضی که داده‌های مربوط به یک Student را وارد کرده و بر روی دکمه Create کلیک کنید یک HTTP Post request به StudentController در ASP.NET MVC ارسال می‌ شود. برای هندل کردن این HTTP Post request باید یک Action Method از نوعی HttpPost با نام create شبیه به کد زیر ایجاد کنید.

public class StudentController : Controller
{
    public ActionResult Index()
    {
        //consume Web API Get method here.. 

        return View();
    }

    public ActionResult create()
    {
        return View();
    }

    [HttpPost]
    public ActionResult create(StudentViewModel student)
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:64189/api/student");

            //HTTP POST
            var postTask = client.PostAsJsonAsync&lt;StudentViewModel&gt;("student", student);
            postTask.Wait();

            var result = postTask.Result;
            if (result.IsSuccessStatusCode)
            {
                return RedirectToAction("Index");
            }
        }

        ModelState.AddModelError(string.Empty, "Server Error. Please contact administrator.");

        return View(student);
    }
}

همانطور که در کد بالا می بینید این Action Method که create نام دارد و از نوع HttpPost است با استفاده از کلاس HttpClient یک HTTP Post request به Web API و StudentController آن ارسال می‌کند. اگر response ای که دریافت شود 200 Ok باشد به لیست Student ها redirect می کنیم. از شما دعوت می‌کنیم که قسمت قبل از این آموزش را برای درک هرچه بهتر نشان دادن لیستی از اطلاعات دانش آموزان را ببینید. به این منظوز از مطلب آموزش ASP.NET Web API  دیدن کنید.

بسته ی آموزش ویدئویی پیاده سازی امنیت در Web API در ASP.NET Core

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی پیاده سازی امنیت در Web API در ASP.NET Core دیدن کنید.

حال می توانید به آدرس http://localhost:64189/student/create رفته و اطلاعات دانش آموز مورد نظر را شبیه به تصویر زیر وارد کنید.

پس از آن بر روی دکمه Create کلیک کرده تا یک رکورد جدید در دیتابیس ذخیره شده و پس از آن به لیست دانش آموزان redirect کنید. این موضوع نیز در تصویر زیر نشان داده شده است.

اگر در روند انجام کار یک Error response توسط Web API به کلاینت ارسال شود توسط View شبیه به تصویر زیر نشان داده می‌شود.

بنابراین ما توانستیم که از Action Method ی که عملیات درج را انجام می‌دهد و Post نام دارد استفاده کنیم. این موضوع با ارسال کردن یک HTTP Post request به Web API انجام خواهد شد. در قسمت بعدی از این آموزش در رابطه با اضافه کردن کد مربوط به استفاده کردن از متد Put به منظور به روز رسانی کردن داده های Student ها صحبت خواهیم کرد.

بسته ی آموزش ویدئویی ASP.NET MVC و Entity Framework در قالب پروژه

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی ASP.NET MVC و Entity Framework در قالب پروژه دیدن کنید.

امیدواریم که این آموزش از وبسایت پرووید نیز مورد توجه تمامی دوستان عزیز قرار گرفته باشد. از شما دعوت می‌کنیم که از دیگر آموزش های ما در رابطه با Web API استفاده کنید. لیست کامل این آموزش ها را می توانید در پست مربوط به آموزش ASP.NET Web API مشاهده کنید.

مرتضی گیتی
بدون نظر

ارسال نظر

نظر
نام
ایمیل
وب سایت