در این پست از وبسایت پرووید در رابطه با ارتباط اپلیکیشن Xamarin Forms و ASP.NET Core Web API #4 صحبت خواهیم کرد. Xamarin Forms تکنولوژی مایکروسافت برای ساخت برنامه های cross-platform است.

در قسمت قبلی از آموزش در رابطه با خواندن ایتم ها صحبت کردیم.

اپدیت کردن ایتم ها

اپدیت کردن ToDoItem ها تا حد زیادی شبیه به ساختن آنها انجام می شود. به همین دلیل متد Edit که در ادامه آن را مشاهده می کنید تا حد زیادی شبیه به متد Create است. تفاوت اصلی این متد در این است که از attribute ای با نام [HttpPut] استفاده می کند. علاوه بر این، اگر این متد نتواند ToDoItem ای که قصد ویرایش کردن آن را دارید پیدا کند یک NotFound (404) response بر می گرداند. در رابطه با data annotation attribute ها در بسته ی آموزش ویدئویی سی شارپ دات نت از وبسایت پرووید بیشتر صحبت کرده ایم. کد زیر متد Edit را نشان می دهد.

[HttpPut]
public IActionResult Edit([FromBody] ToDoItem item)
{
    try
    {
        if (item == null || !ModelState.IsValid)
        {
            return BadRequest(ErrorCode.TodoItemNameAndNotesRequired.ToString());
        }
        var existingItem = _toDoRepository.Find(item.ID);
        if (existingItem == null)
        {
            return NotFound(ErrorCode.RecordNotFound.ToString());
        }
        _toDoRepository.Update(item);
    }
    catch (Exception)
    {
        return BadRequest(ErrorCode.CouldNotUpdateItem.ToString());
    }
    return NoContent();
}

به منظور تست کردن متد Edit از طریق Postman ابتدا HTTP verb را بر روی Put تنظیم کنید و سپس داده ی به روز شدهی object مورد نظر را در request body تنظیم کنید. این موضوع در تصویر زیر نشان داده شده است.

به منظور ایجاد consistency با API ای که از قبل در این پروژه بوده است، متد Edit در صورت موفقیت آمیز بودن عملیاتش یک NoContent (204) response بر می گرداند. توصیه می کنیم حتماً از بسته ی آموزش ویدئویی ساخت Web API در ASP.NET Core 2.0 استفاده کنید.

دیلیت کردن ایتم ها

دیلیت کردن ایتم ها با ارسال یک DELETE request به سرویس انجام می شود. ضمناً، باید ID آن ایتمی که قصد حذف کردن آن را داریم نیز ارسال کنیم. اگر ایتمی که قصد حذف کردن آن را داریم موجود نباشد شبیه به قبل یک NotFound response دریافت خواهیم کرد و اگر عملیات حذف با موفقیت انجام شود یک NoContent (204) response دریافت خواهیم کرد. کد زیر مربوط به متد Delete می باشد.

[HttpDelete("{id}")]
public IActionResult Delete(string id)
{
    try
    {
        var item = _toDoRepository.Find(id);
        if (item == null)
        {
            return NotFound(ErrorCode.RecordNotFound.ToString());
        }
        _toDoRepository.Delete(id);
    }
    catch (Exception)
    {
        return BadRequest(ErrorCode.CouldNotDeleteItem.ToString());
    }
    return NoContent();
}

به منظور تست کردن متد Delete با Postman نیازی به ارسال کردن هیچ چیزی در request body نیست. این موضوع در تصویر زیر نشان داده شده است.

به منظور کسب اطلاعات بیشتر در مورد حذف رکوردها به صورت صحیح در Entity Framework استفاده از بسته ی آموزش ویدئویی Entity Framework 6 را به شما توصیه می کنیم.

بررسی convention های معمول در Web API

با شروع به توسعه backend service ها، خواهید دید که اهمیت داشتن convention های consistent و سازگار چقدر زیاد است. این موضوع در هندل کردن cross-cutting concerns نیز بسیار مهم است. (cross-cutting concerns شامل مواردی می شوند که در سرتاسر برنامه باید لحاظ شوند: مثلاً authentication و logging و caching. در مورد cross-cutting concerns در بسته ی آموزش ویدئویی معماری نرم افزارهای پیشرفته در دات نت صحبت کرده ایم.)

به عنوان convention در برنامه ای که در این آموزش ایجاد کردیم دیدید که زمانی که یک ایتم موجود نبود (چه برای Edit و چه برای Delete) یک NotFound response برگردانده میشد و نه یک BadRequest response. به علاوه، متدهایی که در controller یک پارامتر ورودی را دریافت می کردند همیشه ModelState.IsValid را بررسی می کردند و در صورت valid نبودن یک BadRequest response را بر میگرداندند. به منظور encapsulate کردن convention ها و policy های مختلف می توانید از filter ها در ASP.NET Web API استفاده کنید.

خب این آموزش از وبسایت پرووید را نیز در این قسمت به پایان می رسانیم. امیدواریم که این آموزش نیز مورد توجه تمامی دوستان عزیز قرار گرفته باشد. از شما دعوت می کنیم که حتماً از بسته ی آموزش ویدئویی پروژه محور ساخت اپلیکیشن پیشرفته موبایل با Xamarin.Forms استفاده کنید. در این بسته ی آموزشی از مفاهیمی از قبیل dependency injection و backend service های Web API استفاده کرده ایم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *