【翻译】ASP.NET Web API入门

简介: 简介 ASP.NET Web API是一个可以简化创建HTTP服务的框架 它支持包括浏览器和移动设备在内的各种客户端 ASP.NET Web API是在.NET Framework上创建RESTful应用程序的理想平台 译者注:关于RESTful web服务可以参见这里:http://zh.

简介

ASP.NET Web API是一个可以简化创建HTTP服务的框架

它支持包括浏览器和移动设备在内的各种客户端

ASP.NET Web API是在.NET Framework上创建RESTful应用程序的理想平台

译者注:关于RESTful web服务可以参见这里:http://zh.wikipedia.org/wiki/REST

准备

ASP.NET MVC 4包括ASP.NET Web API,请在这里安装:http://www.asp.net/web-api

使用Visual Studio 2010或者Visual Studio 2012都可以开发

关于ASP.NET Web API的特性请看这里:http://www.asp.net/whitepapers/mvc4-release-notes#_Toc317096197

简介

HTTP并不是单单为web pages服务的

它还是一个创建网络API的强大平台

这些API提供网络服务并可以交互数据。

HTTP协议简单、灵活最重要的是它无处不在

差不多你能想到的所有的平台都支持HTTP协议

所以通过HTTP协议可以兼容大部分客户端

包括浏览器、移动客户端和桌面应用

ASP.NET Web API是一个在.NET Framework上创建web API的类库

在这篇文章中,

你将看到如何使用ASP.NET Web API创建一个web api,

并且让这个api返回一个产品列表的数据

新建项目

如下图所示:

image

image

创建模型

模型是一个用来展现数据的对象

ASP.NET WEB API可以自动序列化模型对象

为JSON、XML、或者其他的数据格式

然后把序列化后的数据写入HTTP的Response消息内

客户端可以读取这些序列化后的数据

并把这些数据反序列化成一个对象

大多数客户端可以解析XML,JSON数据

并且可以根据消息的header来决定使用什么格式化数据的方式

image

创建一个名为Product的模型类

代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

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

创建控制器

如果你使用过ASP.NET MVC

你会发现ASP.NET WEB API的控制器

与ASP.NET MVC的控制器基本相同

最大的不同就是

ASP.NET WEB API的控制器继承自ApiController

ASP.NET MVC的控制器继承自Controller

WEB API的控制器并不返回View,而是直接返回数据。

image

image

并不一定要把所创建的控制器类文件放在Controller文件夹中

创建的文件,修改之后代码如下

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

namespace HelloWebAPI.Controllers
{
    public class ProductsController : ApiController
    {
        Product[] products = new Product[]  
        {  
            new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1.39M },  
            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 Product GetProductById(int id)
        {
            var product = products.FirstOrDefault((p) => p.Id == id);
            if (product == null)
            {
                var resp = new HttpResponseMessage(HttpStatusCode.NotFound);
                throw new HttpResponseException(resp);
            }
            return product;
        }

        public IEnumerable<Product> GetProductsByCategory(string category)
        {
            return products.Where(
                (p) => string.Equals(p.Category, category,
                    StringComparison.OrdinalIgnoreCase));
        }
    }

}
 

GetAllProducts方法返回一个Product类型的数组

GetProductById通过ID查找Product

GetProductsByCategory通过分类查找Product

至此

你可以通过如下URI访问相应的方法

GetAllProducts:/api/products

GetProductById:/api/products/id

GetProductsByCategory:/api/products/?category=category

访问WEB API

运行此工程,

访问如下URL可以得到结果

http://localhost:5380/api/products

image

这里我们看到的是XML的内容

但WEB API非常智能

可以通过客户端的请求来确定传输什么类型的数据

我们可以通过如下代码来获取JSON类型的数据

            $(document).ready(function () {
                // Send an AJAX request 
                $.getJSON("api/products/",
                function (data) {
                    // On success, 'data' contains a list of products. 
                    $.each(data, function (key, val) {

                        // Format the text to display. 
                        var str = val.Name + ': $' + val.Price;

                        // Add a list item for the product. 
                        $('<li/>', { html: str })
                        .appendTo($('body'));
                    });
                });
            });
 

获取到的数据如下图所示

image

项目源码下载地址:

http://files.cnblogs.com/liulun/HelloWebAPI.zip

目录
相关文章
|
2月前
|
存储 开发框架 NoSQL
ASP.NET WEB——项目中Cookie与Session的用法
ASP.NET WEB——项目中Cookie与Session的用法
36 0
|
2月前
|
开发框架 前端开发 .NET
ASP.NET WEB——项目创建与文件上传操作
ASP.NET WEB——项目创建与文件上传操作
46 0
|
1月前
|
API 开发工具 开发者
抖音商品详情API入门:为开发者和商家打造增长工具箱
抖音商品详情API入门:为开发者和商家打造增长工具箱
52 0
|
1月前
|
开发框架 .NET 物联网
.NET从入门到精通,零基础也能搞定的基础知识教程
.NET从入门到精通,零基础也能搞定的基础知识教程
22 0
|
1月前
|
存储 PHP 数据库
使用Net2FTP轻松打造免费的Web文件管理器并公网远程访问
使用Net2FTP轻松打造免费的Web文件管理器并公网远程访问
|
2月前
|
前端开发 JavaScript API
前端秘法番外篇----学完Web API,前端才能算真正的入门
前端秘法番外篇----学完Web API,前端才能算真正的入门
|
2月前
|
开发框架 .NET 程序员
C#/.NET该如何自学入门?
C#/.NET该如何自学入门?
|
2月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
67 0
|
2月前
|
SQL 开发框架 前端开发
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
34 0
|
22天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。