asp.net web api

官方的地址:

http://www.asp.net/web-api

里面的资料很全,是学习的第一选择.建议多参考此资料

1.里面最简单直接的例子

http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

ASP.NET Web API 2 (C#) 入门
由迈克华士信 |2014 年 1 月 20 日

HTTP 不只是为了生成 web 页面。它也是一个强大的平台建设公开服务和数据的 Api。HTTP 是简单、 灵活和无处不在。您能想到的几乎任何平台有一个 HTTP 库,因此,HTTP 服务可以到达范围广泛的客户端,包括浏览器、移动设备和传统的桌面应用程序。

ASP.NET Web API 是用于生成 web Api 在.NET 框架上的框架。在本教程中,您将使用 ASP.NET Web API 创建的 web API 返回的产品列表。前端的 web 页使用 jQuery 来显示结果。

下载已完成的项目.

要求

本教程使用Visual Studio 2013.

创建一个 Web API 项目

启动 Visual Studio 时,从开始页中选择新的项目或者,从文件菜单中,选择新建,然后项目.

模板窗格中,选择已安装的模板和展开Visual C#节点。Visual C#中,选择Web在项目模板的列表中,选择ASP.NET Web 应用程序名称"ProductsApp"项目,然后单击确定.

新的 ASP.NET 项目对话框中,选择的模板。根据"添加文件夹和核心的参考文件",检查Web API单击确定.

您还可以创建一个 Web API 项目,利用"Web API"模板。Web API 模板使用 ASP.NET MVC 提供 API 的帮助页。我使用的空模板在本教程中因为我想要显示无 MVC Web API。一般情况下,你不需要知道 ASP.NET MVC 中使用 Web API。

添加模型

模型是一个对象,表示您的应用程序中的数据。ASP.NET Web API 可以自动序列化您的模型到 JSON、 XML 或一些其他格式,然后将序列化的数据写入到 HTTP 响应消息的正文。只要客户端可以读取序列化格式,它可以反序列化该对象。大多数客户端可以解析 XML 或 JSON。此外,客户端可以表明哪一种格式它想要通过 HTTP 请求消息中设置的接受标头。

让我们首先创建一个简单的模型,它代表一种产品。

如果解决方案资源管理器已不可见,请单击视图菜单,然后选择解决方案资源管理器在解决方案资源管理器中,右键单击模型文件夹。从上下文菜单中,选择添加,然后选择.

命名类"Product"。将以下属性添加到 Product类。

namespace ProductsApp.Models
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Category { get; set; }
        public decimal Price { get; set; }
    }
}

添加控制器

在 Web API 中,控制器是处理 HTTP 请求的对象。我们将添加一个控制器,可以返回由 ID 指定的单个产品的列表

请注意如果你使用了 ASP.NET MVC 中,您已熟悉控制器。Web API 控制器类似于 MVC 控制器,但是继承ApiController类,而不是控制器类。

解决方案资源管理器中,右键单击控制器文件夹。选择添加,然后选择控制器.

添加脚手架对话框中,选择Web API 控制器-空单击添加.

添加控制器对话框中,名称"ProductsController"的控制器。单击添加.

脚手架创建一个名为控制器文件夹中的 ProductsController.cs 文件。

你不需要放入一个文件夹命名为控制器的您的控制器。只是方便的方式来组织您的源文件的文件夹名称。

如果该文件尚未打开,请双击该文件以将其打开。此文件中的代码替换为以下内容:

using ProductsApp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;

namespace ProductsApp.Controllers
{
    public class ProductsController : ApiController
    {
        Product[] products = new Product[] 
        { 
            new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
            new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
            new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
        };

        public IEnumerable<Product> GetAllProducts()
        {
            return products;
        }

        public IHttpActionResult GetProduct(int id)
        {
            var product = products.FirstOrDefault((p) => p.Id == id);
            if (product == null)
            {
                return NotFound();
            }
            return Ok(product);
        }
    }
}

为保持示例简单,产品都存储在一个固定的数组,在控制器类的内部。当然,在实际的应用中,将从数据库中查询或使用一些其他外部数据源。

控制器定义返回的产品的两种方法:

  • GetAllProducts 方法返回产品的完整列表作为 IEnumerable 类型。
  • GetProduct方法查找单个产品由其 id。

就这么简单 !你有工作 web API。每个控制器上的方法对应于一个或多个 Uri:

控制器的方法 URI
GetAllProducts /api/products
GetProduct /api/products/id

对于GetProduct的方法,URI 中的id是一个占位符。例如,若要获得具有 ID 为 5 的产品,URI 是api/products/5.

有关 Web API 如何将 HTTP 请求路由到控制器方法的详细信息,请参见在 ASP.NET Web API 中的路由.

调用与 Javascript 和 jQuery 的 Web API

在本节中,我们将添加一个 HTML 页,使用 AJAX 调用 web API。我们会使用 jQuery,以使 AJAX 调用,并更新该页面的结果。

在解决方案资源管理器中,右键单击该项目并选择添加,然后选择新项目.

添加新项对话框中,选择下Visual C#中, Web节点,然后选择HTML 页面项目。命名"index.html"页。

用以下内容替换此文件中的所有内容:


 xmlns="http://www.w3.org/1999/xhtml">

  </span><span class="pln">Product App</span><span class="tag">



  

All Products

id="products" />

Search by ID

type="text" id="prodId" size="5" /> type="button" value="Search" onclick="find();" /> id="product" />
src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js">

有几种方法来获取 jQuery。在此示例中,使用Microsoft Ajax CDN。您还可以下载它从http://jquery.com/和 ASP.NET"Web API"项目模板包括 jQuery 以及。

获取产品的列表

若要获取产品的列表,请向“api/products”发送一个 HTTP GET 请求。

JQuery getJSON函数会发送一个 AJAX 请求。对于响应包含的 JSON 对象的数组。done函数指定如果请求成功,则调用的回调。在回调中,我们用的产品信息更新 DOM。

$(document).ready(function () {
    // Send an AJAX request
    $.getJSON(apiUrl)
        .done(function (data) {
            // On success, 'data' contains a list of products.
            $.each(data, function (key, item) {
                // Add a list item for the product.
                $('
  • ', { text: formatItem(item) }).appendTo($('#products')); }); }); });
  • 获得产品的 ID

    若要获取产品的 ID,发送 HTTP GET 请求到"/ api/产品id",其中id是产品 id。

    function find() {
        var id = $('#prodId').val();
        $.getJSON(apiUrl + '/' + id)
            .done(function (data) {
                $('#product').text(formatItem(data));
            })
            .fail(function (jqXHR, textStatus, err) {
                $('#product').text('Error: ' + err);
            });
    }

    我们仍然调用 getJSON 发送 AJAX 请求,但这次我们将 ID 放在请求 URI 中。来自此请求的响应是一个单一产品的 JSON 表示。

    运行应用程序

    按 F5 启动调试应用程序。在 web 页应如下所示:

    若要获取产品的 ID,输入了 ID 并单击搜索:

    如果您输入无效的 ID,则服务器返回 HTTP 错误:

    使用 f12 键以查看 HTTP 请求和响应

    当您正在使用 HTTP 服务时,它可以看到 HTTP 请求和请求消息非常有用。你可以通过互联网资源管理器中 9 中使用 F12 开发人员工具。从互联网资源管理器 9,按f12 键以打开工具。单击网络选项卡,然后按开始捕获现在回到 web 页,请按F5重新加载该 web 页。互联网资源管理器中将捕获浏览器和 web 服务器之间的 HTTP 通信。摘要视图显示页的所有网络通信:

    找到对应的条目相对 uri"api/产品 /"。选择此项,然后单击转到详细信息视图在详细信息视图中,有选项卡以查看请求和响应的邮件标题和正文。例如,如果您单击请求标头选项卡,您可以在接受标头中看到客户端请求的“application/json”。

    如果您单击响应正文选项卡,您可以看到如何产品列表中被序列化为 JSON。其他浏览器都有类似的功能。提琴手,web 调试代理是另一个有用的工具。你可以使用的提琴手以查看您的 HTTP 流量,并撰写 HTTP 请求,请求,为您提供在请求中的 HTTP 标头的完全控制。

    后续步骤

    • 有关支持 POST、PUT 和 DELETE 操作的 HTTP 服务的更完整示例,请参阅创建支持 CRUD 操作的 Web API.
    • 有关创建 HTTP 服务流体和响应的 web 应用程序的更多信息,请参见ASP.NET 单页面应用程序.
    • 您可以使您的 web API 可用在互联网上通过将它部署到承载的提供程序。Microsoft 提供了免费虚拟主机达 10 中的网站一个免费的 Windows Azure 试用帐户。有关如何将 Visual Studio web 项目部署到 Windows Azure Web 站点的信息,请参阅部署到 Windows Azure 网站 ASP.NET Web 应用程序.

    作者信息

    迈克华士信— — 迈克华士信是在微软的程序员-作家。


    你可能感兴趣的:(.net,web技术)