ASP.NET Web API 入门示例详解
- REST服务已经成为最新的服务端开发趋势,ASP.NET Web API即为.NET平台的一种轻量级REST架构.
- ASP.NET Web API直接借鉴了ASP.NET MVC的设计,两者具有非常类似的编程模式。
- 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);
}
}
服务调用:
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 入门示例详解的更多相关文章
- ASP.NET Web API 开篇示例介绍
ASP.NET Web API 开篇示例介绍 ASP.NET Web API 对于我这个初学者来说ASP.NET Web API这个框架很陌生又熟悉着. 陌生的是ASP.NET Web API是一个全 ...
- 【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入门 ...
- 基于.Net Framework 4.0 Web API开发(2):ASP.NET Web APIs 参数传递方式详解
概述: ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.调用API过程中参数的传递是必须的,本节就来谈谈 ...
- ASP.net Web API综合示例
目录 概述 功能介绍 程序结构 服务器端介绍 客户端介绍 “契约” Web API设计规则 并行写入冲突与时间戳 身份验证详解 Web API验证规则 客户端MVVM简介 Web.Config 本DE ...
- ASP.NET Web API 入门大杂烩
[前言] 本文是大杂烩,意思即是:到处Copy再加一点点思考而混在一起的文章,引用来源因为太多太杂故而省略,望原作者原谅. [概述] ASP.NET Web API随ASP.NET MVC 4一起发行 ...
- ASP.NET Web API使用示例
原文地址:https://blog.csdn.net/chinacsharper/article/details/21333311 上篇博客讲解rest服务开发时,曾经提到过asp.net mvc中的 ...
- C#版ASP.NET Web API使用示例
为更好更快速的上手Webapi设计模式的接口开发,本文详细解释了在Web API接口的开发过程中,我们可能会碰到各种各样的问题总结了这篇,希望对大家有所帮助. 1:在接口定义中确定MVC的get或者P ...
- ASP.NET Web API 入门 (API接口、寄宿方式、HttpClient调用)
一.ASP.NET Web API接口定义 ASP.NET Web API默认实现了Action方法和HTTP方法的映射,Action方法方法名体现了其能处理的请求必须采用的HTTP方法 二.寄宿方式 ...
- 【Web API系列教程】1.1 — ASP.NET Web API入门
前言 HTTP不仅仅服务于web页面.同一时候也是构建暴露服务和数据的API的强大平台.HTTP有着简单.灵活和无处不在的特点.你能想到的差点儿全部平台都包括有一个HTTP库.所以HTTP服务能够遍及 ...
随机推荐
- z/OS上Dataset 的移动
最近的一个需求,需要把大批量的Dataset移到新的Storage Class,新的Volume中去,刚开始感觉非常头疼.仔细研究后发现这个事情其实很简单.确实符合别人所说,事情的在你真正开始努力之后 ...
- An internal error occurred during: "Building workspace".
当在eclipse中的web工程中增加了extjs4,出现An internal error occurred during: "Building workspace". Java ...
- Process and Thread
A process is a completely independent program that has its own address space, while a thread is a se ...
- .sh脚本判断判断某一变量是否为某一数值
.sh脚本中,判断某一变量(例如:OEM_CUSTOMER_SUPPORT)是否为某一数值(例如:0),并根据条件做不同处理,写法如下: if [ $OEM_CUSTOMER_SUPPORT -eq ...
- WEB前端的原理及组成
1:认识WEB前端的组成部分和相关专业术语!具体的总结如下:
- (6) 深入理解Java Class文件格式(五)
前情回顾 本专栏的前几篇博文, 对class文件中的常量池进行了详细的解释. 前文讲解了常量池中的7种数据项, 它们分别是: CONSTANT_Utf8_info CONSTANT_NameAndTy ...
- R实战之热点图(HeatMap)
快速实现是搜索帮助文档的首要目的,所以此处涉及实战的文章一概略去传统帮助文档的理论部分,直接上代码加注释! 本文将介绍R语言下利用ggplot2包制作heatmap的代码 -------------- ...
- [问题2014A07] 复旦高等代数 I(14级)每周一题(第九教学周)
[问题2014A07] 设 \(A\) 是有理数域 \(\mathbb{Q}\) 上的 4 阶方阵, \(\alpha_1,\alpha_2,\alpha_3,\alpha_4\) 是 \(\mat ...
- linux环境下安装mysql数据库遇到的问题
总结一句话: 安装完mysql数据库记得授权远程登录. 坑的现象: ERROR 1045 (28000): Access denied for user 'guoxp'@'localhost' ( ...
- C++string中有关大小和容量的函数浅析
1.length()与size() length是因为沿用C语言的习惯而保留下来的,string类最初只有length,引入STL之后,为了兼容又加入了size,它是作为STL容器的属性存在的,便于符 ...