zoukankan      html  css  js  c++  java
  • 使用ASP.Net WebAPI构建REST服务(一)——简单的示例

    由于给予REST的Web服务非常简单易用,它越来越成为企业后端服务集成的首选方法。本文这里介绍一下如何通过微软的Asp.Net WebAPI快速构建REST-ful 服务。

    首先创建一个Asp.Net Web应用程序(我这里用的是Visual Studio 2013,它已经内置了Web API2)。

        

    在出来的模板中选择Empty(空项目),并勾选WebAPI。点击确定后,就创建了一个空的WebAPI服务。

        

    此时只有一个空项目,还没有任何功能,在进行下一步之前,首先我们来看一下REST的基本操作模型,大致可以分为如下四种:

    • POST — 创建资源
    • GET — 检索资源
    • PUT — 更新资源
    • DELETE — 删除资源

    非常经典的CRUD模型。在Web API中实现这样一个的模型是非常简单的,直接使用向导建一个Controller即可

        

        

    如果用传统的向导,记得把向导后面的那个1给去掉:

     

    默认的模板内容如下

     1     public class ValuesController : ApiController
     2     {
     3         // GET api/<controller>
     4         public IEnumerable<string> Get()
     5         {
     6             return new string[] { "value1", "value2" };
     7         }
     8 
     9         // GET api/<controller>/5
    10         public string Get(int id)
    11         {
    12             return "value";
    13         }
    14 
    15         // POST api/<controller>
    16         public void Post([FromBody]string value)
    17         {
    18         }
    19 
    20         // PUT api/<controller>/5
    21         public void Put(int id, [FromBody]string value)
    22         {
    23         }
    24 
    25         // DELETE api/<controller>/5
    26         public void Delete(int id)
    27         {
    28         }
    29     } 

    这其实已经帮我们实现了一个最基本的服务了,不过这个服务中只实现了Get,它支持如下两种中方式的URL访问(其它的方式也能访问,但没有具体的效果):

    • api/values        访问所有的Value列表    
    • api/values/{id}        根据ID访问Value

    按Ctrl + F5中执行,在浏览器中输入相应的地址即可看到结果

        

    下面我们要做的就是完善它,实现一个简单的查询功能,这里我引用了微软官方的一个例子:

     1 public class ProductsController : ApiController
     2  {
     3         Product[] products = new Product[]
     4         {
     5             new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
     6             new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
     7             new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
     8         };
     9 
    10         public IEnumerable<Product> Get()
    11         {
    12             return products;
    13         }
    14 
    15         public IHttpActionResult Get(int id)
    16         {
    17             var product = products.FirstOrDefault((p) => p.Id == id);
    18             if (product == null)
    19             {
    20                 return NotFound();
    21             }
    22             return Ok(product);
    23         }
    24     }
    25 
    26     public class Product
    27     {
    28         public int Id { get; set; }
    29         public string Name { get; set; }
    30         public string Category { get; set; }
    31         public decimal Price { get; set; }
    32     } 

     

    此时,我们就可以在浏览器中看到结果了(由于Controller改名字了,此时的地址就变成了api/products)

        

    到此为止,一个基于Asp.net Web API的 简单的REST Web服务就构建完成了,由于篇幅所限,这里就不做更多的介绍了,跟多信息可以参看微软官方文档:Getting Started with ASP.NET Web API 2。另外,如果想对REST有更深入的了解的话,可以看看infoq的这篇文章:深入浅出REST。关于Asp.net Web API其它内容,我后续大概还会陆续写几篇文章来介绍它。

  • 相关阅读:
    百度地图拾取坐标
    调参到脱发(百度大脑)
    git上传到GitHub
    Google搜索
    网络搜索引擎
    函数(函数的分类)
    adb的安装及环境配置
    三大流行数据库(MongoDB、PostgreSQL和Harper)大比拼
    《写给大家看的设计书》,推荐给想了解设计的程序员
    单元测试
  • 原文地址:https://www.cnblogs.com/caoyc/p/5677103.html
Copyright © 2011-2022 走看看