ASP.NET Web API 2 入门教学

9 篇文章 0 订阅
8 篇文章 0 订阅

ASP.NET Web API 2 入门教学

原文更新日期:2017.11.28

导航页面

http://blog.csdn.net/wf824284257/article/details/79475115

前言

HTTP不仅用于web前后端的交互,同时也是一个可以被用来构筑API来向外提供服务和数据的这样一个强大的平台。HTTP是简单的、灵活的、无处不在的,几乎所有你可以想到的平台都有一个HTTP库,所以HTTP服务可以连接到非常多种客户端,包括浏览器、移动设备以及传统的桌面应用。

ASP.NET Web API 是一个可以在.NET平台来构建 Web API 的一个框架。在这篇教学文章里,你将会使用ASP.NET Web API 来创建一个可以返回一个产品列表( 一组Product )的 WEB API 应用。

本教程使用的软件版本

Visual Studio 2017

Web API 2

如果你需要在.NET Core上实现Web API应用,那么你可以看这篇教程:
https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api

创建一个 Web API 项目

在这篇教程里,你将会使用 ASP.NET Web API 来创建一个可以返回一个产品列表( List )的 WEB API 应用,前端页面使用JQuery来展示这个结果。

#####pic 1

打开VS,点击 文件 -> 新建 -> 项目 ,在项目模板选择界面时,选择 已安装模板并展开Visual C# 节点。在该节点下,选择 Web,并在项目模板列表里选择ASP.NET Web Application,将项目命名为“ProductsApp”并点击OK。

#########pic 2

在New ASP.NET Project窗口中,选择Empty模板,在“Add folders and core references for”下面的复选框中,选中 Web API, 点击OK。

###########pic 3

注意:你也可以使用 “Web API” 项目模板来创建Web API应用,该项目模板使用了 ASP.NET MVC 来提供API 帮助页面。本教程使用空模板是因为我想展示的是不用MVC的Web API。一般来说,在学习和使用Web API时,并不需要事先了解ASP.NET MVC。

创建一个Model

Model就是实体类,它在你的应用中扮演着“数据”的角色。ASP.NET Web API 可以自动的将你的model序列化为JSON、XML或其他的适合传输的格式,然后将序列化后的数据写到HTTP response里。只要客户端可以识别这种序列化格式(JSON、XML),就可以将读取到的数据反序列化为实体对象。绝大多数客户端都可以识别JSON和XML。此外,客户端可以通过设置HTTP请求头来表明它需要哪种格式。

那就让我们从创建一个“Product”实体类开始。

如果“解决方案资源管理器”(Solution Explorer)没有打开的话,可以从菜单栏的”视图”(View)里面打开。在Solution Explorer里面,右键点击Models文件夹,添加一个类。

##########pic4

为这个class取名为“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; }
    }
}

添加一个Controller

在 Web API 模板中,控制器(Controller)是一个用来处理HTTP请求的对象。我们将创建一个controller,并实现两个功能:

  1. 返回List ;

  2. 根据Product.Id来返回指定的Product。

注意:如果你用过 ASP.NET MVC,你肯定已经熟悉了controller的用法了。Web API controllers与 MVC controllers非常相似,但 Web API controllers是继承自“ApiController”类的,而 MVC controllers 是继承自“Controller”类。

在 Solution Explorer 里,右键 Controllers文件夹,并选中Controller。

############## 5

在选择Controller类型的窗口里,选中Web API Controller - Empty,并点击添加

############# 6

在 Add Controller 对话框中,将该controller 命名为“ProductsController”,点击“Add”添加。

############# 7

之后,你将会在Controllers 文件夹内看到由上面操作生成的文件ProductsController.cs。

############# 8

注意:你并不需要将controller放到名为“Controllers”的文件夹里面。本简称这样做只是因为这是可以让源文件更有条理、更有组织性。

如果生成的Controller文件没有打开的话,从 Solution Explorer里双击该文件打开它。使用下面这段代码来代替原有内容。

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);
        }
    }
}

为了让这个例子更简单一些,我们的products使用定长数组来存储固定内容。在实际应用中,你可能需要读取数据库或从其他的数据源中获取这样的数据。

这个控制器定义了两个返回Product的方法

  1. GetAllProducts 方法。 以IEnumerable的形式返回所有的Product

  2. GetProduct方法。通过ID来返回指定的Product

终于点题了。。。到这里,你终于有了一个可以用的 Web API 了。controller里的每个方法都对应一个或多个uri

########## 9

对于 GetProduct 方法,uri 里的id是一个占位符。举个例子,要想取得ID为5的Product,uri是api/products/5 。

如果想学习更多的关于Web API 路由 HTTP请求到controller的方法,可以看这篇教学:https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api

通过Javascript和JQuery来访问 Web API

在这一段内容里,我们将会添加一个HTML页面,并用Jquery的AJAX访问 Web API 取得数据,将其显示在HTML页面上。

在 Solution Explorer 里,右键点击项目名并选择 添加->新项

########## 10

在 Add New Item 窗口中,左边选中C#下的Web节点,找到HTML Page,选中,命名为index.html,并点击添加。

########### 11

将刚添加的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>

获取JQuery有很多种方法,在这个教程中,我使用的是微软的AJAX CDN. 你也可以从http://jquery.com/下载它, ASP.NET “Web API” 项目中也默认包含了JQuery。

获取一组Product

要想获取所有的Product,只需要发送一个 HTTP GET 请求到 “/api/products” 即可。

这里我们用JQuery的getJSON函数来发送AJAX请求。这个请求的返回结果是一组JSON对象。“done”函数指定了一个回调,这个回调将会在AJAX成功后执行。在这个回调函数中,我们使用返回的“Product”的信息来更新HTML页面(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.
                $('<li>', { text: formatItem(item) }).appendTo($('#products'));
            });
        });
});

通过ID获取一个Product

要想通过ID获取指定的Product,只需要发送HTTP GET请求到 “/api/products/id”,将uri里的id替换为想要查找的Product的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后面。这个请求的返回结果是具有指定ID的单个Product的信息(JSON格式)。

运行应用

按F5来运行我们的应用。页面应该看起来像下面这样:

############# 12

要想通过ID取得一个Product,只要输入ID,并点击Search按钮

############## 13

如果你输入一个不存在的ID值,服务器将会返回一个HTTP错误:

############### 14

使用 F12来查看HTTP的请求及响应

当你使用HTTP服务时,查看HTTP请求及响应的内容是非常有帮助的。你可以在浏览器界面按F12来进入开发者界面,找到NetWork或Net栏,按F5刷新页面,即可查看HTTP的请求及响应的内容。
IE浏览器的界面就像这样:

############ 15

google像这样:

########## 16

其他浏览器的这个功能也类似。另外一个非常实用的工具是Fiddler,使用它可以对HTTP请求及响应进行查看、追踪,方便调试。

将应用部署到Azure云平台

该段省略。

下一步

Web API 2 中 Action的返回值 :
http://blog.csdn.net/wf824284257/article/details/79437495

结束

本文为微软官方文档的个人译文。本译文的非商用转载请注明地址及作者,感谢。禁止商用转载。若经发现,将依法追究责任。
英文原文地址:https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api#software-versions-used-in-the-tutorial

原文作者: MikeWasson and Other 5 Contributors

主作者链接:https://github.com/MikeWasson

作者尊重微软公司的知识产权,若贵公司认为该博客有损贵公司利益,请联系作者删除

译者:大吴凡 http://www.dawufan.cn

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: ASP.NET Web API 2框架揭秘是一本针对ASP.NET Web API 2框架进行深入介绍的电子书。ASP.NET Web API 2是一个用于构建基于HTTP协议的Web服务的开发框架。这本电子书透过简单直接的方式,帮助读者更好地理解和应用该框架。 在这本电子书中,我们将介绍Web API 2框架的核心概念和基本的工作原理。读者将了解到Web API 2的基本架构和特性,以及如何通过配置和扩展来实现自定义需求。我们还会涉及到常见的Web API设计模式、RESTful架构以及数据传输和安全方面的问题。 通过这本电子书,读者将深入了解Web API 2框架的关键概念,如控制器、动作方法、路由、返回类型和过滤器等。我们会通过实际示例来说明如何创建和调用Web API,并介绍如何处理输入数据、输出结果和错误处理等方面的问题。 此外,这本电子书还将讨论Web API 2框架与其他ASP.NET技术如MVC框架的关系,以及如何在实际项目中使用一些常用的工具和库来提高开发效率和代码质量。 总结而言,ASP.NET Web API 2框架揭秘电子书是一本完整而全面的指南,旨在帮助开发者快速入门和深入理解Web API 2框架,从而能够更好地应用于开发符合现代Web标准的高性能、可扩展和安全的Web服务。无论是初学者还是有经验的开发者,都能从这本电子书中获得实用的知识和技巧。 ### 回答2: ASP.NET Web API 2框架揭秘电子书是一本详细介绍ASP.NET Web API 2框架的电子书。ASP.NET Web API 2 是一个用于构建Web API应用程序的框架,它可以让开发者轻松地构建Web服务,并将其与各种客户端应用程序(如Web、移动设备和桌面应用程序)进行交互。 这本电子书详细介绍了ASP.NET Web API 2框架的工作原理、核心组件、常见用法和最佳实践。它从请求的路由到返回的响应的整个过程进行了解剖,帮助读者理解框架的内部工作机制。 电子书中涵盖了许多重要的概念,如控制器、路由、模型绑定、过滤器等。它解释了如何创建和配置Web API控制器,并讨论了一些高级主题,如版本控制、身份验证和授权。 此外,电子书还介绍了如何使用ASP.NET Web API 2框架来处理不同类型的数据,如JSON、XML和表单数据。它还讨论了如何处理常见的错误和异常,并提供了一些建议和实践,以优化性能和安全性。 总的来说,ASP.NET Web API 2框架揭秘电子书是一本帮助开发者深入了解ASP.NET Web API 2框架的权威指南。它适用于那些有一定ASP.NET开发经验的开发者,并且可以帮助他们更好地利用ASP.NET Web API 2框架来构建高效、可扩展和安全的Web API应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值