码迷,mamicode.com
首页 > Windows程序 > 详细

Web Api 系列(一) 初识 web api

时间:2015-08-19 20:03:35      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

   HTTP 不仅仅服务于web 页面,而且它也是一个强大的平台 它对于构建提供开放服务和数据的api 来说。HTTP是简单的,灵活的,无处不在的。几乎所有的平台都存在它的身影。HTTP服务可以贯穿于几乎所有的客户端。包括浏览器,移动设备和传统的桌面程序。

  ASP.NET Web API 是基于.net Framework 用来构建Web 接口的框架。接下来使用asp.net  web api 构建web 接口来返回产品列表。

  演示案例需要的软件版本:vs 2013, web api 2。

  

一 创建一个 Web Api 项目

   在这个演示案例中将使用 asp.net web api 来创建一个返回产品列表的web接口,前端使用Jquery.

 技术分享

打开 vs 创建一个项目如图:

技术分享

然后创建一个空的mvc 项目:

 技术分享

 注意:还可以使用web api 的模板创建一个web api的项目, web api 模板通过asp.net mvc 提供 web api 的帮助页面。

二 添加Model

  model 是程序里用来表现数据的对象,asp.net web api 可以自动的序列化成JSON,XML 或者一些其他的格式,然后把序列化的数据写到HTTP 响应信息的 body里。只要客户端可以读取序列化的格式,它就可以把数据反序列化成对象,大部分的客户端都可以转换XML,JSON,此外,客户端想显示那种格式可以通过设置接受Header的HTTP请求信息来设置。

 添加一个Product 类

技术分享

 

 1 namespace ProductsApp.Models
 2 {
 3     public class Product
 4     {
 5         public int Id { get; set; }
 6         public string Name { get; set; }
 7         public string Category { get; set; }
 8         public decimal Price { get; set; }
 9     }
10 }

三 添加 controller

技术分享

 

技术分享

 1 using ProductsApp.Models;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.Linq;
 5 using System.Net;
 6 using System.Web.Http;
 7 
 8 namespace ProductsApp.Controllers
 9 {
10     public class ProductsController : ApiController
11     {
12         Product[] products = new Product[] 
13         { 
14             new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
15             new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
16             new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
17         };
18 
19         public IEnumerable<Product> GetAllProducts()
20         {
21             return products;
22         }
23 
24         public IHttpActionResult GetProduct(int id)
25         {
26             var product = products.FirstOrDefault((p) => p.Id == id);
27             if (product == null)
28             {
29                 return NotFound();
30             }
31             return Ok(product);
32         }
33     }
34 }

 这个controller中有两个返回产品列表的方法 

  1, GetAllProducts 返回的是IEnumerable<Product> 类型。

  2, GetProduct  通过ID 来查找返回单个产品。

每个方法对应的URL分别是:

  Method URL
GetAllProducts /api/products
GetProduct /api/products/id

 

 

 

关于web api 的路由后续会有讲解。

然后创建一个html 页面:

技术分享

 

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Product App</title>
</head>
<body>

  <div>
    <h2>All Products</h2>
    <ul id="products" />
  </div>
  <div>
    <h2>Search by ID</h2>
    <input type="text" id="prodId" size="5" />
    <input type="button" value="Search" onclick="find();" />
    <p id="product" />
  </div>

  <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
  <script>
    var uri = api/products;

    $(document).ready(function () {
      // Send an AJAX request
      $.getJSON(uri)
          .done(function (data) {
            // On success, ‘data‘ contains a list of products.
            $.each(data, function (key, item) {
              // Add a list item for the product.
              $(<li>, { text: formatItem(item) }).appendTo($(#products));
            });
          });
    });

    function formatItem(item) {
      return item.Name + : $ + item.Price;
    }

    function find() {
      var id = $(#prodId).val();
      $.getJSON(uri + / + id)
          .done(function (data) {
            $(#product).text(formatItem(data));
          })
          .fail(function (jqXHR, textStatus, err) {
            $(#product).text(Error:  + err);
          });
    }
  </script>
</body>
</html>

 四 运行程序

可以看到效果:显示所有的产品

技术分享

  通过ID显示一个产品

技术分享

 如果查找失败显示信息

技术分享

 

在IE中可以查看HTTP请求信息:

技术分享

 

详细的请求信息:

技术分享

 

   原文链接 http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api 本系列是翻译的微软官网上的教程文章,翻译不当之处敬请指正。

 未完待续。。。

Web Api 系列(一) 初识 web api

标签:

原文地址:http://www.cnblogs.com/ListenCode/p/4741909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!