Web Api 系列(一) 初识 web api

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 本系列是翻译的微软官网上的教程文章,翻译不当之处敬请指正。

未完待续。。。

时间: 2024-10-26 18:42:12

Web Api 系列(一) 初识 web api的相关文章

[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)

前言 本篇是承接上一篇: [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 在上一篇粗略地介绍了如何使用Top-Down的方式创建一个web service .  但是对于如何部署及调用,以及一些细节的部分基本上没有介绍. 应某些博友的要求, 也适逢自己有空, 接下来就详细介绍一下整个部分如何进行. 环境准备 JDK 肯定要安装了, 这个就不多讲了. 1. eclipse  3.5.2 对eclipse 版本的要求其实不是很严

[Axis2与Eclipse整合开发Web Service系列之三] 服务端返回值

前言 在前面的三篇中 [Axis2与Eclipse整合开发Web Service系列之一] 生成Web Service Client(将WSDl 转化成 Java代码) [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续) 介绍了如何使用 axis2 与 eclipse 的开发web Service .在第

Web API系列(三)统一异常处理

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 前面讲了webapi的安全验证和参数安全,不清楚的朋友,可以看看前面的文章,<Web API系列(二)接口安全和参数校验>,本文主要介绍Web API异常结果的处理.作为内部或者是对外提供的统一webapi 接口,统一的异常处理,把正确的信息

ASP.NET Web API系列教程(目录)(转)

注:微软随ASP.NET MVC 4一起还发布了一个框架,叫做ASP.NET Web API.这是一个用来在.NET平台上建立HTTP服务的Web API框架,是微软的又一项令人振奋的技术.目前,国内对此关注的人似乎还不多,有关ASP.NET Web API的文章也不多见.为此,本人打算对微软ASP.NET Web API官方网站上的一些教程进行翻译,以期让更多的国人了解.学习和使用这项ASP.NET Web API. ASP.NET Web API系列教程目录 Introduction:Wha

ASP.NET Web API系列教程目录

ASP.NET Web API系列教程目录 Introduction:What's This New Web API?引子:新的Web API是什么? Chapter 1: Getting Started with ASP.NET Web API第1章 ASP.NET Web API入门 Your First Web API (C#)第一个Web API(C#) Deep Dive into Web API深入探讨Web API(这是一个视频教程,本翻译系列略) Pro ASP.NET Web

Web Api系列教程第2季(OData篇)(二)&mdash;&mdash;使用Web Api创建只读的OData服务

前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/3490137.html)来演示OData服务,因此我们可以直接使用之前建好的数据访问层.但是不是说一定要看到之前的所有内容,我们只是借用数据库访问层,对于数据库的模型构建移步(使用Entity Framework Code First构建数据库模型). 有了数据访问的基础,我们可以开始构建OData服

[转]Web Api系列教程第2季(OData篇)(二)——使用Web Api创建只读的OData服务

本文转自:http://www.cnblogs.com/fzrain/p/3923727.html 前言 很久没更新了,之前有很多事情,所以拖了很久,非常抱歉.好了,废话不多说,下面开始正题.本篇仍然使用上一季的的项目背景(系列地址http://www.cnblogs.com/fzrain/p/3490137.html)来演示OData服务,因此我们可以直接使用之前建好的数据访问层.但是不是说一定要看到之前的所有内容,我们只是借用数据库访问层,对于数据库的模型构建移步(使用Entity Fram

【ASP.NET Web API2框架揭秘】 初识Web API

Web Api 是什么? MSDN:ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务 百度百科:Web API是网络应用程序接口. 个人理解:Web API 是提供给多种客户端对data做CRUD(增删查改)操作的统一接口 ------------------------------------------- Asp.net Web API 支持多种寄宿方式 1,IIS作为宿主(创建一个Asp.net web应用程序作为Web

【Web API系列教程】2.1 — ASP.NET Web API中的路由机制

这篇文章描述了ASP.NET Web API如何将HTTP请求发送(路由)到控制器. 备注:如果你对ASP.NET MVC很熟悉,你会发现Web API路由和MVC路由非常相似.主要区别是Web API使用HTTP方法来选择动作(action),而不是URI路径.你也可以在Web API中使用MVC风格的路由.这篇文章不需要ASP.NET MVC的任何知识. 路由表 在ASP.NET Web API中,控制器是一个用于处理HTTP请求的类.控制器中的公共方法被称为动作方法或简单动作.当Web A