ایجاد WebApi در Asp.Net Core
1 0

ایجاد WebApi در Asp.Net Core


نحوه ایجاد WebApi و پیاده سازی یک Repository در Asp.Net Core

در این پست نحوه پیاده سازی یک WebApi در Asp.Net Core می پردازیم و همچنین در این WebApi به پیاده سازی یک Repository و استفاده از آن در WebApi را مورد بررسی قرار می دهیم.

 

ابتدا یک پروژه از نوع Asp.Net Core ایجاد کنید

ایجاد کلاس TodoItem

در پوشه Models یک کلاسی به نام TodoItem ایجاد کنید و کدهای زیر را به آن اضافه کنید

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace SampleWebApi.Models
{
    public class TodoItem
    {
        public string Key { get; set; }
        public string Name { get; set; }
        public bool IsComplete { get; set; }
    }
}

ایجاد کلاس اینترفیس

در این قسمت کلاسی از نوع اینترفیس به نام ITodoRepository در پوشه Models ایجاد کنید و کدهای زیر را به آن اضافه کنید

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace SampleWebApi.Models
{
  public  interface ITodoRepository
    {
        void Add(TodoItem item);
        void Update(TodoItem item);
        TodoItem Find(string key);
        TodoItem Remove(string key);
        IEnumerable<TodoItem> GetAll();
    }
}

ایجاد کلاس Repository

یک کلاس به نام TodoRepository در پوشه Models ایجاد کنید و کدهای زیر را به آن اضافه کنید

using System;
using System.Collections.Generic;
using System.Collections.Concurrent;//
using System.Linq;
using System.Threading.Tasks;

namespace SampleWebApi.Models
{
    public class TodoRepository:ITodoRepository
    {
        private static ConcurrentDictionary<string,TodoItem> _todos=
            new ConcurrentDictionary<string, TodoItem>();

        public TodoRepository()
        {
            Add(new Models.TodoItem {Name = "Item1"});
        }

        public void Add(TodoItem item)
        {
            item.Key = Guid.NewGuid().ToString();

            // برای اضافه کردن به مخزن داده به صورت فیک
            _todos[item.Key] = item;
        }

        public void Update(TodoItem item)
        {
            _todos[item.Key] = item;
        }

        public TodoItem Find(string key)
        {
            TodoItem item;
            _todos.TryGetValue(key, out item);

            return item;
        }

        public TodoItem Remove(string key)
        {
            TodoItem item;
            _todos.TryRemove(key, out item);

            return item;
        }

        public IEnumerable<TodoItem> GetAll()
        {
            return _todos.Values;
        }
    }
}

ایجاد Controller

حالا به پوشه Controllers بروید و یک Controller به نام TodoController ایجاد کنید و کدهای زیر را به آن اضافه کنید

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using SampleWebApi.Models;

// For more information on enabling Web API for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860

namespace SampleWebApi.Controllers
{
    [Route("api/[controller]")]
    // نکته مهم: دیگر کنترلر وب ای پی آی از کنترلر ارث بری می کند
    public class TodoController : Controller
    {
        public TodoController(ITodoRepository todoItems)
        {
           TodoItems = todoItems;
        }

        public ITodoRepository TodoItems { get; set; }

        [HttpGet]
        public IEnumerable<TodoItem> GetAll()
        {
            return TodoItems.GetAll();
        }

        [HttpGet("{id}", Name = "GetTodo")]
        public ActionResult GetById(string id)
        {
            var item = TodoItems.Find(id);

            if (item == null)
            {
                return NotFound();
            }

            // چون یک مقدار بر می گرداند از آبجکت ریزالت استفاده می کنیم
            return new ObjectResult(item);
        }


        [HttpPost]
        public IActionResult Create([FromBody]TodoItem item)
        {
            if (item == null)
            {
                return BadRequest();
            }

            TodoItems.Add(item);

            // گت تو دو یک نام اختیاری است
            return CreatedAtRoute("GetTodo", new { id = item.Key }, item);
        }

        //ویرایش
        // چون بایندینگ نداریم از فرم بادی استفاده می کنیم
        [HttpPut("{id}")]
        public IActionResult Update(string id, [FromBody]TodoItem item)
        {
            if (item == null || item.Key != id)
            {
                return BadRequest();
            }
            TodoItems.Update(item);
            return new NoContentResult();
        }


        [HttpPatch("{id}")]
        public IActionResult Update([FromBody] TodoItem item, string id)
        {
            // در پچ نیاز به ارسال آی دی برای ویرایش نیست

            if (item == null)
            {
                return BadRequest();
            }

            var todo = TodoItems.Find(id);

            if (todo == null)
            {
                return NotFound();
            }

            item.Key = todo.Key;
            TodoItems.Update(item);

            return new NoContentResult();
        }


        [HttpDelete("{id}")]
        public IActionResult Delete(string id)
        {
            var todo = TodoItems.Find(id);
            if (todo == null)
            {
                return NotFound();
            }
            TodoItems.Remove(id);

            // چون هیچ پاسخی بر نمی گرداند از نوکانتنت ریزالت استفاده می کنیم.
            return new NoContentResult();
        }
    }
}

در این controller چهار عمل ثبت، حذف، ویرایش و نمایش اطلاعات پیاده سازی شده

دانلود

نویسنده حسین فتحی
گروه مطلب Asp.Net Core
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۱۱ اردیبهشت ۱۳۹۶
منبع ایران گنج
تعداد نظرات ۰
قیمت کاربران عضو سایت
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

نظر / سوال

Captcha