1. REST服务已经成为最新的服务端开发趋势,ASP.NET Web API即为.NET平台的一种轻量级REST架构.
  2. ASP.NET Web API直接借鉴了ASP.NET MVC的设计,两者具有非常类似的编程模式。
  3. ASP.NET Web API以Controller的形式来定义服务,而Controller中的Action方法则代表具体的操作。
  • 以下示例展示一个轻量级的架构:{
    Web前端:HTML+jQuery +KnockOut.js
    服务端:ASP.NET Web API
    通信协议:HTTP+JSON
    }

服务定义:

public class ContactsController : ApiController
    {
        private static List<Contact> contacts = new List<Contact>
        {
            new Contact{
                Id="",
                Name="张三",
                PhoneNo="",
                EmailAddress="zhangsan@gmail.com"
            },
            new Contact{
                Id="",
                Name="李四",
                PhoneNo="",
                EmailAddress="lisi@gmail.com"
            }
        };         // GET api/contacts
        public IEnumerable<Contact> Get()
        {
            return contacts;
        }         // GET api/contacts/5
        public Contact Get(string id)
        {
            return contacts.FirstOrDefault(c => c.Id == id);
        }         // POST api/contacts
        public void Post(Contact contact)
        {
            Delete(contact.Id);
            contacts.Add(contact);
        }         // PUT api/contacts/5
        public void Put(Contact contact)
        {
            contact.Id = Guid.NewGuid().ToString();
            contacts.Add(contact);
        }         // DELETE api/contacts/5
        public void Delete(string id)
        {
            Contact contact = contacts.FirstOrDefault(c => c.Id == id);
            contacts.Remove(contact);
        }
    }

服务调用:

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4     <title>联系人列表</title>
  5     <script src="../Scripts/jquery-1.7.1.js" type="text/javascript"></script>
  6     <script src="../Scripts/knockout-2.1.0.debug.js" type="text/javascript"></script>
  7 </head>
  8 <body>
  9     <div id="contacts">
 10         <table>
 11             <tr>
 12                 <th>
 13                     姓名
 14                 </th>
 15                 <th>
 16                     电话号码
 17                 </th>
 18                 <th>
 19                     Email地址
 20                 </th>
 21             </tr>
 22             <tbody>
 23                 <!-- ko foreach: allContacts -->
 24                 <tr>
 25                     <td data-bind="text:Name">
 26                     </td>
 27                     <td data-bind="text:PhoneNo">
 28                     </td>
 29                     <td>
 30                         <input type="text" class="textbox long" data-bind="value:EmailAddress" />
 31                     </td>
 32                     <td>
 33                         <a href="#" data-bind="click:$root.updateContact">修改</a> <a href="#" data-bind="click:$root.deleteContact">
 34                             删除</a>
 35                     </td>
 36                 </tr>
 37                 <!-- /ko -->
 38                 <tr data-bind="with:addedContact">
 39                     <td>
 40                         <input type="text" class="textbox" data-bind="value:Name" />
 41                     </td>
 42                     <td>
 43                         <input type="text" class="textbox" data-bind="value:PhoneNo" />
 44                     </td>
 45                     <td>
 46                         <input type="text" class="textbox long" data-bind="value:EmailAddress" />
 47                     </td>
 48                     <td>
 49                         <a href="#" data-bind="click:$root.addContact">添加</a>
 50                     </td>
 51                 </tr>
 52             </tbody>
 53         </table>
 54     </div>
 55     <script type="text/javascript">
 56         function ContactViewModel() {
 57             self = this;
 58             self.allContacts = ko.observableArray();
 59             self.addedContact = ko.observable();
 60 
 61             //加载联系人列表
 62             self.loadContacts = function () {
 63                 $.get("/api/contacts", null, function (data) {
 64                     self.allContacts(data);
 65                     var emptyContact = { Id: "", Name: "", PhoneNo: "", EmailAddress: "" };
 66                     self.addedContact(emptyContact);
 67                 });
 68             };
 69 
 70             //添加联系人
 71             self.addContact = function (data) {
 72                 if (!self.validate(data)) {
 73                     return;
 74                 }
 75                 $.ajax({
 76                     url: "/api/contacts/",
 77                     data: self.addedContact(),
 78                     type: "PUT",
 79                     success: self.loadContacts
 80                 });
 81             };
 82 
 83             //修改联系人信息
 84             self.updateContact = function (data) {
 85                 $.ajax({
 86                     url: "/api/contacts/",
 87                     data: data,
 88                     type: "POST",
 89                     success: self.loadContacts
 90                 });
 91             };
 92 
 93             //删除联系人
 94             self.deleteContact = function (data) {
 95                 $.ajax({
 96                     url: "/api/contacts/" + data.Id,
 97                     type: "DELETE",
 98                     success: self.loadContacts
 99                 });
             };
 
             self.validate = function (data) {
                 if (data.Name && data.PhoneNo && data.EmailAddress) {
                     return true;
                 }
                 alert("请输入完整联系人信息!");
                 return false;
             }
             self.loadContacts();
         }
         ko.applyBindings(new ContactViewModel());
     </script>
 </body>
 </html>

ASP.NET Web API 入门示例详解的更多相关文章

  1. ASP.NET Web API 开篇示例介绍

    ASP.NET Web API 开篇示例介绍 ASP.NET Web API 对于我这个初学者来说ASP.NET Web API这个框架很陌生又熟悉着. 陌生的是ASP.NET Web API是一个全 ...

  2. 【ASP.NET Web API教程】1 ASP.NET Web API入门

    原文 [ASP.NET Web API教程]1 ASP.NET Web API入门 Getting Started with ASP.NET Web API第1章 ASP.NET Web API入门 ...

  3. 基于.Net Framework 4.0 Web API开发(2):ASP.NET Web APIs 参数传递方式详解

    概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.调用API过程中参数的传递是必须的,本节就来谈谈 ...

  4. ASP.net Web API综合示例

    目录 概述 功能介绍 程序结构 服务器端介绍 客户端介绍 “契约” Web API设计规则 并行写入冲突与时间戳 身份验证详解 Web API验证规则 客户端MVVM简介 Web.Config 本DE ...

  5. ASP.NET Web API 入门大杂烩

    [前言] 本文是大杂烩,意思即是:到处Copy再加一点点思考而混在一起的文章,引用来源因为太多太杂故而省略,望原作者原谅. [概述] ASP.NET Web API随ASP.NET MVC 4一起发行 ...

  6. ASP.NET Web API使用示例

    原文地址:https://blog.csdn.net/chinacsharper/article/details/21333311 上篇博客讲解rest服务开发时,曾经提到过asp.net mvc中的 ...

  7. C#版ASP.NET Web API使用示例

    为更好更快速的上手Webapi设计模式的接口开发,本文详细解释了在Web API接口的开发过程中,我们可能会碰到各种各样的问题总结了这篇,希望对大家有所帮助. 1:在接口定义中确定MVC的get或者P ...

  8. ASP.NET Web API 入门 (API接口、寄宿方式、HttpClient调用)

    一.ASP.NET Web API接口定义 ASP.NET Web API默认实现了Action方法和HTTP方法的映射,Action方法方法名体现了其能处理的请求必须采用的HTTP方法 二.寄宿方式 ...

  9. 【Web API系列教程】1.1 — ASP.NET Web API入门

    前言 HTTP不仅仅服务于web页面.同一时候也是构建暴露服务和数据的API的强大平台.HTTP有着简单.灵活和无处不在的特点.你能想到的差点儿全部平台都包括有一个HTTP库.所以HTTP服务能够遍及 ...

随机推荐

  1. 使用uiautomator做UI测试

    转载~~~~~~~~~~~~~~~~~~~~~~~~ 若有侵权,请及时联系本博主,博主将第一时间撤销 在Android 4.1发布的时候包含了一种新的测试工具–uiautomator,uiautoma ...

  2. pyenv ipython jupyter

    pyenv pyenv  依赖安装 yum -y install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel ...

  3. IOS 键盘 禁止输入字母

    在开发中有时候需要数字键盘,但是设置textfield为默认数字键后, 在模拟器上如果用电脑键盘仍然可以输入字母, 在真机上如果使用搜狗等其他输入法也可能会出现可以输入字母的情况.解决方法如下,在te ...

  4. linux centos 6.5 运行MySQL Workbench 6.0找不到 libmysqlclient.so.16和libmysqlclient_r.so.16

    找到已安装mysql/lib目录下有类似文件: -rw-r--r-- root root 12月 : libmysqlclient.a lrwxrwxrwx root root 12月 : libmy ...

  5. EXCEL表格单元格中包含数字英文和汉字,如何自动去掉汉字,保留英文和数字

    EXCEL表格单元格中包含数字英文和汉字,如何自动去掉汉字,保留英文和数字 Function 求数字和字母(对象 As String) '在文本与数字混杂中提取数字和字母   Dim myReg    ...

  6. Calendar日历小程序

    //有待完善,有点bugpackage com.sunshine.framework.calendar.model;import java.util.Calendar;/** * * <p> ...

  7. python文件和目录操作方法大全(含实例)

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...

  8. abort终止正在进行中的的ajax请求

    核心:调用XMLHttpRequest对象上的abort方法 jQuery的ajax方法有自己的超时时间设置参数:   $.ajax({type:'POST', url:'b.php', data:' ...

  9. Reapter合并行

    html文件: <asp:Repeater ID="rptEmployee" runat="server"> <HeaderTemplate& ...

  10. linux应用程序开发-文件编程-系统调用方式

    在看韦东山视频linux驱动方面有一些吃力,究其原因,虽然接触过linux应用程序编程,但是没有深入去理解,相关函数用法不清楚,正好看到国嵌视频对这一方面讲的比较透彻, 所以把学习过程记录下来,也作为 ...