基于RESTful标准的Web Api
微软的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相关推荐
- Web Api:基于RESTful标准
参考链接:http://www.cnblogs.com/lori/p/3555737.html 简单的了解到RESTful架构后,跟着以上链接做了一个小练习. Step1: 新建WebApi项目,新建 ...
- YbSoftwareFactory 代码生成插件【八】:基于JQuery EasyUI、Web Api的 ASP.NET MVC 代码生成插件...
"YbRapidSolution for MVC"是 YbSoftwareFactory 最新的代码生成插件,可一键生成基于ASP.NET MVC的解决方案源代码.其生成的 Dem ...
- 基于Leaflet和高德Web API扩展地理编码服务
需求背景: 需求很简单就是想调用高德地图的地理编码服务,单独扩展一个类出来. 参考地址: Leaflet类扩展:https://leafletjs.com/examples/extending/ext ...
- 使用ASP.NET Web API构建Restful API
目录 介绍 这种方法有什么好处? Restful约定 构建API 测试API 一点困惑: 最佳实践: 数据传输对象(DTO) Automapper IHttpActionResult 使用Web AP ...
- 在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 ...
- ASP.NET Web API 应用教程(一) ——数据流使用
相信已经有很多文章来介绍ASP.Net Web API 技术,本系列文章主要介绍如何使用数据流,HTTPS,以及可扩展的Web API 方面的技术,系列文章主要有三篇内容. 主要内容如下: I 数据 ...
- ASP.NET Core Web API下事件驱动型架构的实现(一):一个简单的实现
很长一段时间以来,我都在思考如何在ASP.NET Core的框架下,实现一套完整的事件驱动型架构.这个问题看上去有点大,其实主要目标是为了实现一个基于ASP.NET Core的微服务,它能够非常简单地 ...
- 什么是MVC和Web Api,以及他们两者的区别!
一.什么是MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示 ...
- WEB API已成为构建客户端服务的利器?
一.软件开发的互联网思维 1. 网络就是计算机 进入互联网时代,软件开发必然放眼全局,充分利用互联网的资源和特性.比如,为了提高响应性能,就选择使用CDN作为前端缓存.而且可能还需要采用CDN提供的A ...
最新文章
- hashmap为什么用红黑树_关于HashMap的实现,一篇文章带你彻底搞懂,再也不用担心被欺负
- 【测试】批量删除供应商配额(Quota )
- PowerShell尝试登录SQL Server
- react中弹框的显示隐藏
- linux默认归档目录,Linux系统管理(第4章:目录和文件管理二)
- 马尔科夫随机场之图像分割【二】
- Android解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget
- 这几天的QC培训想到的
- 菜鸟AJAX 教程和JSON
- matlab谱系聚类图,如何看懂SPSS聚类分析的树状图/谱系图?
- 【推荐】网络安全学习路线和资料分享
- CC1310在433MHz下的PCB设计指南
- 联想新计算机开机黑屏,联想笔记本电脑开不了机 联想笔记本电脑开机黑屏怎么办...
- Jboot初遇activiti
- Linux安装配置MySQL8.0 打war包 启动项目
- requests.exceptions.ConnectionError:HTTPSConnectionPool(host
- 0到9的数字替换成零 到 玖 的 大写汉字的函数
- golang常用的工具包
- UVa Online Judge 西班牙Valladolid 在线判官 和 uDebug使用简单教程
- 数学建模美赛写作指导20篇(七)-美赛优缺点英文表达
热门文章
- 经典C语言程序100例之七七
- php 类定义抽象方法吗,PHP面向对象:接口与抽象方法
- 09_Flink入门案例、word-count程序(java和scala版本)、添加依赖、Flink Streaming和Batch的区别 、在集群上执行程序等
- Knox网关、网关简介、概述、支持的Apache Hadoop服务、支持的Apache Hadoop生态系统的UI、参考资料
- 【Keil C51】使用 watch1 来查看变量的值
- nc65语义模型设计_文本匹配方法系列––多维度语义交互匹配模型
- oracle 删除补全日志组_浅谈Oracle 20c ASM文件组模板技术
- chromiumfx 4.5_巴中的朋友看过来,大型线上车展来了,开拓者最高综合优惠4.5万!...
- linux内存free低,Linux上的内存使用情况与`free`不匹配
- Faster R-CNN论文及源码解读