标签:style blog class code tar ext
由于给予REST的Web服务非常简单易用,它越来越成为企业后端服务集成的首选方法。本文这里介绍一下如何通过微软的Asp.Net WebAPI快速构建REST-ful 服务。
首先创建一个Asp.Net Web应用程序(我这里用的是Visual Studio 2013,它已经内置了Web API2)。
在出来的模板中选择Empty(空项目),并勾选WebAPI。点击确定后,就创建了一个空的WebAPI服务。
此时只有一个空项目,还没有任何功能,在进行下一步之前,首先我们来看一下REST的基本操作模型,大致可以分为如下四种:
非常经典的CRUD模型。在Web API中实现这样一个的模型是非常简单的,直接使用向导建一个Controller即可
如果用传统的向导,记得把向导后面的那个1给去掉:
默认的模板内容如下:
publicclassValuesController :
ApiController
{
// GET api/<controller>
publicIEnumerable<string>
Get()
{
returnnewstring[]
{ "value1",
"value2"
};
}
// GET api/<controller>/5
publicstring Get(int
id)
{
return"value";
}
// POST api/<controller>
publicvoid Post([FromBody]string
value)
{
}
// PUT api/<controller>/5
publicvoid Put(int
id, [FromBody]string
value)
{
}
// DELETE api/<controller>/5
publicvoid Delete(int
id)
{
}
}
这其实已经帮我们实现了一个最基本的服务了,不过这个服务中只实现了Get,它支持如下两种中方式的URL访问(其它的方式也能访问,但没有具体的效果):
按Ctrl + F5中执行,在浏览器中输入相应的地址即可看到结果
下面我们要做的就是完善它,实现一个简单的查询功能,这里我引用了微软官方的一个例子:
publicclassProductsController
: ApiController
{
Product[] products = newProduct[]
{
newProduct { Id = 1, Name = "Tomato Soup",
Category = "Groceries",
Price = 1
},
newProduct { Id = 2, Name = "Yo-yo", Category =
"Toys", Price
= 3.75M
},
newProduct { Id = 3, Name = "Hammer", Category
= "Hardware",
Price = 16.99M
}
};
publicIEnumerable<Product>
Get()
{
return
products;
}
publicIHttpActionResult Get(int
id)
{
var product =
products.FirstOrDefault((p) => p.Id ==
id);
if (product == null)
{
return
NotFound();
}
return
Ok(product);
}
}
publicclassProduct
{
publicint Id { get;
set;
}
publicstring Name { get;
set;
}
publicstring Category { get;
set;
}
publicdecimal Price { get;
set;
}
}
此时,我们就可以在浏览器中看到结果了(由于Controller改名字了,此时的地址就变成了api/products)
到此为止,一个基于Asp.net Web API的 简单的REST Web服务就构建完成了,由于篇幅所限,这里就不做更多的介绍了,跟多信息可以参看微软官方文档:Getting Started with ASP.NET Web API 2。另外,如果想对REST有更深入的了解的话,可以看看infoq的这篇文章:深入浅出REST。关于Asp.net Web API其它内容,我后续大概还会陆续写几篇文章来介绍它。
使用ASP.Net WebAPI构建REST-ful 服务(一)——简单的示例,布布扣,bubuko.com
使用ASP.Net WebAPI构建REST-ful 服务(一)——简单的示例
标签:style blog class code tar ext
原文地址:http://www.cnblogs.com/TianFang/p/3704221.html