Web API相对WCF优势,以及构建WebApi
2016-03-22 23:52
169 查看
在企业级开发过程中,为了让系统具有更高的扩展性以及便于维护,通常都会使用web api和wcf技术来把系统切割成一个个功能点,发布出去,供前端调取。那么问题来了,有些人不仅要问,既然有了wcf,为什么还要搞一套webapi呢?会不会有点画蛇添足呢?
使用过wcf技术的人大都知道它的一些基础特性吧。在这里不做多说了,现在就说我为什么要选择webapi的原因:wcf是基于soap协议,数据格式是xml,而webapi是基于RESTful标准的,数据格式多样化,例如xml,json,ATOM。wcf配置繁琐,而webapi它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete等,它们分别对应的几个操作。更重要的是它仅仅是一个URL链接,可以在不同的平台运转,同时支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可以使程序更简单、更健壮。
如何来创建一个webapi接口呢?
web api是在vs2012上的mvc4项目绑定发行,所以首先打开vs2012,创建一个webapi项目
ApiController部分的代码:
Get操作:
![](http://images2015.cnblogs.com/blog/527274/201603/527274-20160322231725933-474596999.png)
下面我们看看返回结果:
![](http://images2015.cnblogs.com/blog/527274/201603/527274-20160322231925542-517134448.png)
Post操作:
webapi代码:
调用post操作
js代码:
返回结果:
![](http://images2015.cnblogs.com/blog/527274/201603/527274-20160322233910823-883238699.png)
put更新操作:
webapi代码:
js代码:
提交put更新操作结果:
![](http://images2015.cnblogs.com/blog/527274/201603/527274-20160322234454308-1026093213.png)
delete操作:
webapi代码:
js代码:
至此我们就完成了webapi 四种基本操作方式的代码构建,各位是不是觉得很简单呢?
感谢您的阅读!
使用过wcf技术的人大都知道它的一些基础特性吧。在这里不做多说了,现在就说我为什么要选择webapi的原因:wcf是基于soap协议,数据格式是xml,而webapi是基于RESTful标准的,数据格式多样化,例如xml,json,ATOM。wcf配置繁琐,而webapi它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete等,它们分别对应的几个操作。更重要的是它仅仅是一个URL链接,可以在不同的平台运转,同时支持MVC的特征,像路由、控制器、action、filter、模型绑定、控制反转(IOC)或依赖注入(DI),单元测试。这些可以使程序更简单、更健壮。
如何来创建一个webapi接口呢?
web api是在vs2012上的mvc4项目绑定发行,所以首先打开vs2012,创建一个webapi项目
ApiController部分的代码:
Get操作:
![](http://images2015.cnblogs.com/blog/527274/201603/527274-20160322231725933-474596999.png)
下面我们看看返回结果:
![](http://images2015.cnblogs.com/blog/527274/201603/527274-20160322231925542-517134448.png)
Post操作:
webapi代码:
/// <summary> /// post操作 /// </summary> /// <param name="entity"></param> /// <returns></returns> [HttpPost] public HttpResponseMessage AddUser([FromBody] Users entity) { _userList.Add(entity); return new HttpResponseMessage { Content = new StringContent(JsonTool.EntityToJson<List<Users>>(_userList), Encoding.UTF8, "application/json") }; }
调用post操作
js代码:
function testpost() { $.ajax({ url: 'http://localhost:2779/api/Test/AddUser/', type: 'post', dataType: 'json', data: { "UserID": "4", 'UserName': "test", 'UserEmail': "123456@qq.com" }, success: function (data) { alert(data); } }); }
返回结果:
![](http://images2015.cnblogs.com/blog/527274/201603/527274-20160322233910823-883238699.png)
put更新操作:
webapi代码:
[HttpPut] public HttpResponseMessage PutUser(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 new HttpResponseMessage { Content = new StringContent(JsonTool.EntityToJson<List<Users>>(_userList), Encoding.UTF8, "application/json") }; }
js代码:
function putpost() { $.ajax({ url: 'http://localhost:2779/api/Test/PutUser/?id=1', type: 'put', dataType: 'json', data: { "UserID": "1", 'UserName': "test1", 'UserEmail': "test123456@qq.com" }, success: function (data) { alert(data); } }); }
提交put更新操作结果:
![](http://images2015.cnblogs.com/blog/527274/201603/527274-20160322234454308-1026093213.png)
delete操作:
webapi代码:
/// <summary> /// 删除 /// </summary> /// <param name="id">主键</param> /// <returns></returns> [HttpDelete] public HttpResponseMessage Delete(int id) { _userList.Remove(_userList.FirstOrDefault(i => i.UserID == id)); return new HttpResponseMessage { Content = new StringContent(JsonTool.EntityToJson<List<Users>>(_userList), Encoding.UTF8, "application/json") }; }
js代码:
function deletes() { $.ajax({ url: 'http://localhost:2779/api/Test/Delete/?id=1', type: 'DELETE', dataType: 'json', success: function (data) { alert(data); } }); }
至此我们就完成了webapi 四种基本操作方式的代码构建,各位是不是觉得很简单呢?
感谢您的阅读!
相关文章推荐
- oc-16-set,get方法
- 自定义模板引擎_3
- 解决switch……case不能匹配字符串的方法
- java jdbc线程池的使用
- 解析json数据
- XCode所有版本
- Homework 4
- 自动展示收起广告功能
- [LinkedList和数组]——自定义Map升级版
- python之类-django进阶
- Fragment的startActivityForResult详细解决方案
- 结对项目 - 词频统计
- CALayer动画实践(二):CAReplicatorLayer的用法
- leetcode014 Longest Common Prefix
- Netty系列之Netty百万级推送服务设计要点
- Android中常见IPC方法总结
- 206. Reverse Linked List
- 神坑,mac 10.11.2 安装cocoapods
- 因Window服务器自动更新并重启导致WebSphere服务停止服务故障一例
- 如何每日增量加载数据到Hive分区表