微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete等,它们分别对应的几个操作,下面讲一下:

GET:生到数据列表(默认),或者得到一条实体数据

POST:添加服务端添加一条记录,记录实体为Form对象

PUT:添加或修改服务端的一条记录,记录实体的Form对象,记录主键以GET方式进行传输

DELETE:删除 服务端的一条记录

注意上面公开的API接口都是在XMLHttpRequest情况下调用的,当然你可以使用jquery的ajax组件来完成这个请求调用,它的代码更加面向对象,下面举例说明一下

这是页面的HTML代码部分,实现最基本的CRUD操作

<fieldset><legend>测试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@cnblogs.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@cnblogs.com"},success: function (data) { alert(JSON.stringify(data)); }});}function deletes(id) {$.ajax({url    : "/api/Test/1",type   : "DELETE",success: function (data) { alert(data);}});}
</script>

下面是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@cnblogs.com"},new Users {UserID = 3, UserName = "Batman", UserEmail = "Batman@cnblogs.com"}};/// <summary>/// 得到列表对象/// </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">表单对象,它是唯一的</param>/// <returns></returns>public Users Post([FromBody] Users entity){_userList.Add(entity);return entity;}/// <summary>/// 更新/// </summary>/// <param name="id">主键</param>/// <param name="form">表单对象,它是唯一的</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));}}

下面我们看一下各个操作调用的结果:

添加操作(POST)

更新操作(PUT)

最后,再强调一下,web api使用RESTful架构的,不像传统的(同是SOAP的) RPC方式的wcf和web Service,它强调的是接口模块的概念,每个模块都是独立的,每个模块的接口方法都是统一的和单一的,即CRUD方法组成。

基于RESTful标准的Web Api相关推荐

  1. Web Api:基于RESTful标准

    参考链接:http://www.cnblogs.com/lori/p/3555737.html 简单的了解到RESTful架构后,跟着以上链接做了一个小练习. Step1: 新建WebApi项目,新建 ...

  2. YbSoftwareFactory 代码生成插件【八】:基于JQuery EasyUI、Web Api的 ASP.NET MVC 代码生成插件...

    "YbRapidSolution for MVC"是 YbSoftwareFactory 最新的代码生成插件,可一键生成基于ASP.NET MVC的解决方案源代码.其生成的 Dem ...

  3. 基于Leaflet和高德Web API扩展地理编码服务

    需求背景: 需求很简单就是想调用高德地图的地理编码服务,单独扩展一个类出来. 参考地址: Leaflet类扩展:https://leafletjs.com/examples/extending/ext ...

  4. 使用ASP.NET Web API构建Restful API

    目录 介绍 这种方法有什么好处? Restful约定 构建API 测试API 一点困惑: 最佳实践: 数据传输对象(DTO) Automapper IHttpActionResult 使用Web AP ...

  5. 在Windows上安装HTTPIE(人类HTTP)-非常适合ASP.NET Web API和RESTful JSON服务

    Recently in on a post on the RESTful ASP.NET Web API framework I used curl to post JSON to an HTTP e ...

  6. ASP.NET Web API 应用教程(一) ——数据流使用

    相信已经有很多文章来介绍ASP.Net Web API 技术,本系列文章主要介绍如何使用数据流,HTTPS,以及可扩展的Web API 方面的技术,系列文章主要有三篇内容. 主要内容如下: I  数据 ...

  7. ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现

    很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地 ...

  8. 什么是MVC和Web Api,以及他们两者的区别!

    一.什么是MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示 ...

  9. WEB API已成为构建客户端服务的利器?

    一.软件开发的互联网思维 1. 网络就是计算机 进入互联网时代,软件开发必然放眼全局,充分利用互联网的资源和特性.比如,为了提高响应性能,就选择使用CDN作为前端缓存.而且可能还需要采用CDN提供的A ...

最新文章

  1. hashmap为什么用红黑树_关于HashMap的实现,一篇文章带你彻底搞懂,再也不用担心被欺负
  2. 【测试】批量删除供应商配额(Quota )
  3. PowerShell尝试登录SQL Server
  4. react中弹框的显示隐藏
  5. linux默认归档目录,Linux系统管理(第4章:目录和文件管理二)
  6. 马尔科夫随机场之图像分割【二】
  7. Android解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget
  8. 这几天的QC培训想到的
  9. 菜鸟AJAX 教程和JSON
  10. matlab谱系聚类图,如何看懂SPSS聚类分析的树状图/谱系图?
  11. 【推荐】网络安全学习路线和资料分享
  12. CC1310在433MHz下的PCB设计指南
  13. 联想新计算机开机黑屏,联想笔记本电脑开不了机 联想笔记本电脑开机黑屏怎么办...
  14. Jboot初遇activiti
  15. Linux安装配置MySQL8.0 打war包 启动项目
  16. requests.exceptions.ConnectionError:HTTPSConnectionPool(host
  17. 0到9的数字替换成零 到 玖 的 大写汉字的函数
  18. golang常用的工具包
  19. UVa Online Judge 西班牙Valladolid 在线判官 和 uDebug使用简单教程
  20. 数学建模美赛写作指导20篇(七)-美赛优缺点英文表达

热门文章

  1. 经典C语言程序100例之七七
  2. php 类定义抽象方法吗,PHP面向对象:接口与抽象方法
  3. 09_Flink入门案例、word-count程序(java和scala版本)、添加依赖、Flink Streaming和Batch的区别 、在集群上执行程序等
  4. Knox网关、网关简介、概述、支持的Apache Hadoop服务、支持的Apache Hadoop生态系统的UI、参考资料
  5. 【Keil C51】使用 watch1 来查看变量的值
  6. nc65语义模型设计_文本匹配方法系列––多维度语义交互匹配模型
  7. oracle 删除补全日志组_浅谈Oracle 20c ASM文件组模板技术
  8. chromiumfx 4.5_巴中的朋友看过来,大型线上车展来了,开拓者最高综合优惠4.5万!...
  9. linux内存free低,Linux上的内存使用情况与`free`不匹配
  10. Faster R-CNN论文及源码解读