中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

WebApi系列~基于RESTful標(biao)準的Web Api

回到目錄

微軟的(de)web api是(shi)在(zai)vs2012上的(de)mvc4項目綁定(ding)發行的(de),它(ta)提出的(de)web api是(shi)完全基于RESTful標準(zhun)的(de),完全不同于之前的(de)(同是(shi)SOAP協(xie)議的(de))wcf和webService,它(ta)是(shi)簡(jian)單(dan),代碼可(ke)讀性強的(de),上手快的(de),如果要拿它(ta)和web服務相比(bi),我會說,它(ta)的(de)接口(kou)更(geng)標準(zhun),更(geng)清晰,沒有(you)混亂的(de)方(fang)法(fa)名稱,有(you)的(de)只有(you)幾種標準(zhun)的(de)請求(qiu),如get,post,put,delete等,它(ta)們分別對應(ying)的(de)幾個操(cao)作,下面(mian)講一下:

GET:生到數(shu)據列表(biao)(默認),或(huo)者得到一條實體數(shu)據

POST:添加服務(wu)端添加一條記錄,記錄實(shi)體為Form對象(xiang)

PUT:添加或修改服務端的(de)(de)一條記(ji)錄(lu),記(ji)錄(lu)實體(ti)的(de)(de)Form對象,記(ji)錄(lu)主鍵以GET方式進行(xing)傳輸

DELETE:刪(shan)除 服務端的一條(tiao)記錄

注(zhu)意(yi)上面公開的(de)(de)(de)API接口都是(shi)在XMLHttpRequest情況(kuang)下調(diao)(diao)用(yong)的(de)(de)(de),當然你可(ke)以(yi)使用(yong)jquery的(de)(de)(de)ajax組件來(lai)完(wan)成這(zhe)個請求調(diao)(diao)用(yong),它(ta)的(de)(de)(de)代碼更加面向(xiang)對(dui)象,下面舉例說明一下

這是(shi)頁面的HTML代碼部分,實現最基本的CRUD操(cao)作(zuo)

<fieldset>
    <legend>測(ce)試Web Api
    </legend>
    <a href="javascript:add()">添加(post)</a>
    <a href="javascript:update(1)">更新(put)</a>
    <a href="javascript:deletes(1)">刪除(delete)</a>
    <a href="/api/test">列表(Get)</a>
    <a href="/api/test/1">實體(Get)</a>
</fieldset>
<script>

    function add() {

        $.ajax({
            url    : "/api/Test/",
            type   : "POST",
            data   :{"UserID":4,"UserName":"test","UserEmail":"Parry@ywjunkang.com"},
            success: function (data) { alert(JSON.stringify(data)); }
   
        });

    }

    //更新
    function update(id) {
        $.ajax({
            url    : "/api/Test?id="+id,
            type   : "Put",
            data   :{"UserID":1,"UserName":"moditest","UserEmail":"Parry@ywjunkang.com"},
            success: function (data) { alert(JSON.stringify(data)); }
        });

    }
    function deletes(id) {
        $.ajax({
            url    : "/api/Test/1",
            type   : "DELETE",
            success: function (data) { alert(data);}
        });

    }
</script>

下面是(shi)ApiController部分的代碼:

   /// <summary>
    /// Test模塊API
    /// URI:/Api/Test
    /// </summary>
    public class TestController : ApiController
    {

        /// <summary>
        /// User Data List
        /// </summary>
        private readonly List<Users> _userList = new List<Users>
       {
           new Users {UserID = 1, UserName = "zzl", UserEmail = "bfyxzls@sina.com"},
           new Users {UserID = 2, UserName = "Spiderman", UserEmail = "Spiderman@ywjunkang.com"},
           new Users {UserID = 3, UserName = "Batman", UserEmail = "Batman@ywjunkang.com"}
       };
        /// <summary>
        /// 得到(dao)列表對象
        /// </summary>
        /// <returns></returns>
        public IEnumerable<Users> Get()
        {
            return _userList;
        }

        /// <summary>
        /// 得到一個實體,根據主鍵
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Users Get(int id)
        {
            return _userList.FirstOrDefault(i => i.UserID == id);
        }

        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="form">表單對象,它(ta)是(shi)唯一的</param>
        /// <returns></returns>
        public Users Post([FromBody] Users entity)
        {
            _userList.Add(entity);
            return entity;
        }

        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="id">主鍵</param>
        /// <;param name="form">表單對象,它(ta)是唯一的</param>
        /// <returns></returns>
        public Users Put(int id, [FromBody]Users entity)
        {
            var user = _userList.FirstOrDefault(i => i.UserID == id);
            if (user != null)
            {
                user.UserName = entity.UserName;
                user.UserEmail = entity.UserEmail;
            }
            return user;
        }
        /// <summary>
        /// 刪除
        /// </summary>
        /// <param name="id">主鍵</param>
        /// <returns></returns>
        public void Delete(int id)
        {
         _userList.Remove(_userList.FirstOrDefault(i=>i.UserID==id));
        }
    }

下面我們(men)看一下各(ge)個操作調用(yong)的(de)結果:

添加操(cao)作(zuo)(POST)

更新操作(PUT)

 

最后,再強調(diao)一下(xia),web api使用RESTful架構的(de)(de)(de),不像傳統的(de)(de)(de)(同是(shi)SOAP的(de)(de)(de)) RPC方(fang)式(shi)的(de)(de)(de)wcf和web Service,它強調(diao)的(de)(de)(de)是(shi)接口模(mo)塊的(de)(de)(de)概念,每個(ge)模(mo)塊都(dou)是(shi)獨立的(de)(de)(de),每個(ge)模(mo)塊的(de)(de)(de)接口方(fang)法(fa)都(dou)是(shi)統一的(de)(de)(de)和單(dan)一的(de)(de)(de),即CRUD方(fang)法(fa)組成。

感謝您的閱讀!

回到目錄

posted @ 2014-02-19 13:30  張占嶺  閱讀(54992)  評論(26)    收藏  舉報