Web API相对WCF优势,以及构建WebApi

 在企业级开发过程中,为了让系统具有更高的扩展性以及便于维护,通常都会使用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操作:

    

下面我们看看返回结果:

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);
}
});

}

 

 

返回结果:

 

 

 

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更新操作结果:

 

 

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 四种基本操作方式的代码构建,各位是不是觉得很简单呢?

感谢您的阅读!

posted @ 2016-03-22 23:52  梦境丛生  阅读(11919)  评论(8编辑  收藏  举报