WebApi項目建立CURD

WebApihtml

1.建立實體類web

public class Contact
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
        public DateTime LastModified { get; set; }
    }ajax

2.操做實體類接口數據庫

public interface IContactRepository
    {
        IEnumerable<Contact> GetAllContacts();//獲取所有數據
        Contact GetContact(string id);//根據id獲取數據
        List<Contact> AddContact(Contact item);//添加數據
        bool RemoveContact(string id);//刪除數據
        List<Contact> UpdateContact(Contact item);   //更新數據
    }json

3.建立BLL並實現IContactRepository接口api

public class ContactBLL : IContactRepository
    {
        public IEnumerable<Contact> GetAllContacts()
        {
            return ContactDAL.GetAllContactsDAL();
        }跨域

        public Models.Contact GetContact(string id)
        {
            return ContactDAL.GetContactDAL(id);
        }服務器

        public List<Contact> AddContact(Contact item)
        {
            return ContactDAL.AddContactDAL(item);
        }async

        public bool RemoveContact(string id)
        {
            return ContactDAL.RemoveContactDAL(id);
        }ide

        public List<Contact> UpdateContact(Contact item)
        {
            return ContactDAL.UpdateContactDAL(item.Id,item);
        }
    }

4.建立DAL操做數據,由於沒有寫數據庫,因此寫了一個集合模擬數據庫

public class ContactDAL
    {
        static List<Contact> list = new List<Contact>() { 
            new Contact(){Id = "1",Name = "小李",Phone = "13800000",Email = "222@qq.com",LastModified = DateTime.Now},
            new Contact(){Id = "2",Name = "小王",Phone = "13500000",Email = "333@qq.com",LastModified = DateTime.Now}
        };

        public static IEnumerable<Contact> GetAllContactsDAL()
        {
            var a = list.Where(u => 1 == 1);
            return a;
        }

        public static Contact GetContactDAL(string id)
        {
            var contact = list.Where(u => u.Id == id).FirstOrDefault<Contact>();//使用lamdba

            return contact;

        }

        public static List<Contact> AddContactDAL(Contact item)
        {
            list.Add(item);
            return list;
        }

        public static bool RemoveContactDAL(string id)
        {
            var a = from u in list where u.Id == id select u;//使用linq
            bool b = list.Remove(a.FirstOrDefault<Contact>());
            return b;
        }

        public static List<Contact> UpdateContactDAL(string id,Contact item)
        {
            //var a = list.Where(u => u.Id == id).FirstOrDefault<Contact>();
            var a = from u in list where u.Id == id select u;
            Contact contact = a.FirstOrDefault<Contact>();
            contact.Name = item.Name;
            return list;
        }

    }

5.建立api能夠讀寫的控制器

    [AllowCross]//webapi容許跨域訪問
    [RoutePrefix("api/contact")]//配置路由
    public class ContactController : ApiController
    {
        private static readonly IContactRepository _contacts = new ContactBLL();

        [HttpGet]
        public string GetContact()
        {
            return JsonConvert.SerializeObject(_contacts.GetAllContacts());
            
        }

        [HttpGet]
        public Contact GetContact(string id)
        {
            return _contacts.GetContact(id);
            
        }

        [HttpPost]
        public List<Contact> AddContact([FromBody]Contact value)
        {
            return _contacts.AddContact(value);
        }

        [HttpPost]
        public List<Contact> UpdateContact([FromBody]Contact value)
        {
            return _contacts.UpdateContact(value);
        }

        [HttpGet]
        public bool RemoveContact(string id)
        {
            return _contacts.RemoveContact(id);
        }
        
    }

6.路由配置(App_Start中的RouteConfig.cs)

修改:url: "{controller}/{action}/{id}",

7.配置跨域訪問(App_Start中的WebApiConfig.cs)

添加改類

public class AllowCrossAttribute : System.Web.Http.Filters.ActionFilterAttribute
    {
        private const string Origin = "Origin";
        /// <summary>
        /// Access-Control-Allow-Origin是HTML5中定義的一種服務器端返回Response header,用來解決資源(好比字體)的跨域權限問題。
        /// </summary>
        private const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
        /// <summary>
        ///  originHeaderdefault的值能夠使 URL 或 *,若是是 URL 則只會容許來自該 URL 的請求,* 則容許任何域的請求
        /// </summary>
        private const string originHeaderdefault = "*";
        /// <summary>
        /// 該方法容許api支持跨域調用
        /// </summary>
        /// <param name="actionExecutedContext"> 初始化 System.Web.Http.Filters.HttpActionExecutedContext 類的新實例。</param>
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            actionExecutedContext.Response.Headers.Add(AccessControlAllowOrigin, originHeaderdefault);
        }
    }

Web端調用


@{
    ViewBag.Title = "請求web api";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>請求web api</h2>

<div>

    <input type="button" value="獲取所有數據" onclick="GetContactAll()"/>
    <input type="button" value="根據id獲取數據" onclick="GetContactToId()" />
    <input type="button" value="添加數據" onclick="AddContact()" />
    <input type="button" value="更新數據" onclick="UpdateContact()" />
    <input type="button" value="刪除數據" onclick="RemoveContact()" />

</div>

<script>

    var path = "http://localhost:32166/api/Contact/";

    function GetContactAll() {

        $.get(path + "GetContact", "", function (data) {

            console.info(data);

        },"json")

    }

    function GetContactToId() {

        $.get(path + "GetContact", {id:"1"}, function (data) {

            console.info(data);

        },"json")

    }

    function AddContact() {
        
        var contact1 ={
            Id:"3",
            Name: "小樓",
            Phone: "123456",
            Email: "123@qq.com"
        }

        var contact2 = {
            Id: "4",
            Name: "小樓",
            Phone: "123456",
            Email: "123@qq.com"
        }

        //兩種方式

        $.post(path + "AddContact", contact1, function (data) {

            console.info(data);

        }, "json");//第一種

        $.ajax({
            type: "post",
            url: path + "AddContact",
            dataType: "json",
            data: contact2,
            async: true,
            success: function (data) {
                console.info(data);
            }
        })//第二種
    }

    function UpdateContact() {
        var contact= {
            Id:"1",
            Name: "小樓",
            Phone: "123456",
            Email: "123@qq.com"
        }
        
        $.post(path + "UpdateContact", contact, function (data) {
        
            console.info(data);

        },'json')

    }

    function RemoveContact() {

        $.get(path + "RemoveContact", { id: "1" }, function (data) {

            console.info(data);

        },'json');

    }

</script>

相關文章
相關標籤/搜索