【翻译】ASP.NET Web API入门

简介

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返回一个产品列表的数据

新建项目

如下图所示:

创建模型

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

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

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

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

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

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

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

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

创建一个名为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,而是直接返回数据。

并不一定要把所创建的控制器类文件放在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

这里我们看到的是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'));
                    });
                });
            });

 

获取到的数据如下图所示

项目源码下载地址:

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

时间: 2024-09-23 19:12:58

【翻译】ASP.NET Web API入门的相关文章

【ASP.NET Web API教程】1 ASP.NET Web API入门

原文 [ASP.NET Web API教程]1 ASP.NET Web API入门 Getting Started with ASP.NET Web API第1章 ASP.NET Web API入门 摘自:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api In this chapter, you'll learn: The basics of building an HTTP service using

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【开篇】【持续更新中。。。】

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[开篇][持续更新中...] 最近发现web api很火,园内也有各种大神已经在研究,本人在asp.net官网上看到一个系列教程,原文地址:http://bitoftech.net/2013/11/25/detailed-tutorial-building-asp-net-web-api-restful-service/.于是打算跟着学一下,把学习过程记录在博客园的同时也分享给大家. 每一篇结束后我都会把代码共享 由于

Asp.Net Web API 2第一课——入门

原文:Asp.Net Web API 2第一课--入门 前言 Http不仅仅服务于Web Pages.它也是一个创建展示服务和数据的API的强大平台.Http是简单的.灵活的.无处不在的.你能想象到几乎任何的平台都会有HTTP服务库.HTTP服务可以涉及到范围广泛的客户端,包括浏览器.各种移动设备和传统的桌面应用程序. Asp.Net Web API是在.NET Framework框架上用于建立Web APIs的一个框架.在这个教程中,你将会使用Asp.Net Web API框架来创建一个能够返

使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【三】——Web Api入门

原文:使用ASP.NET Web Api构建基于REST风格的服务实战系列教程[三]--Web Api入门 系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 经过前2节的介绍,我们已经把数据访问层搭建好了,从本章开始就是Web Api部分了.在正式开始之前,再一次回顾一下Web Api的应用场景:Web Api可以与 MVC,WebForm结合使用,也可以作为一个单独的Web服务.在正式讨论Web Api的配置以及如何构造我们的URI来消

ASP.NET Web API 2 入门教程

译者:jiankunking 出处:http://blog.csdn.net/jiankunking 源码下载 HTTP不仅提供web页面服务,在构建公开服务和数据api方面,它也是一个强大的平台.HTTP简单.灵活.无处不在.几乎你能想到的所有的平台,都有一个HTTP库,因此HTTP服务可以影响到广泛的客户端,包括浏览器.移动设备,和传统的桌面应用程序. ASP.NET Web API是一个基于.NET框架用于构建Web API的框架.在本教程中,您将使用ASP.NET Web API创建一个

【翻译】ASP.NET Web API是什么?

原文 [翻译]ASP.NET Web API是什么? 说明:随微软ASP.NET MVC 4一起发布的还有一个框架,叫做ASP.NET Web API.目前国内关注这项技术的人似乎还很少,这方面的文章也不多见.开发Web应用程序也许可以只用MVC这样的技术,而不用这项Web API技术,但如果用了,会给你的应用程序带来极大的好处.为此,本人转载并翻译了以下这篇文章,后面还会陆续翻译该项技术的一些官方教程.大家一起学习,共同提高. Microsoft ASP.NET: What's This Ne

8 种提升 ASP.NET Web API 性能的方法 【已翻译100%】

ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没有在应用程序结构设计上花时间来获得很好的执行性能. 在本文中,我将介绍8项提高 ASP.NET Web API 性能的技术. 1) 使用最快的 JSON 序列化工具 JSON 的序列化对整个 ASP.NET Web API 的性能有着关键性的影响. 在我的一个项目里,我从 JSON.NET 序列化工具转到了 ServiceStack.Text 有一年半了. 我测量过,Web API 的性能提升了20

Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中]

原文:Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中] 前言 本来一直参见于微软官网进行学习的, 官网网址http://www.asp.net/web-api.出于自己想锻炼一下学习阅读英文文章的目的,又可以学习下微软新发布的技术,其实也很久了,但自己菜鸟一枚,对自己来说都是新技术了.鉴于以上两个原因,本人打算借助google翻译和有道词典,来翻译学习这个系列,并通过博客园来记录自己的翻译学习过程.由于自己阅读水平的确太菜,在借助工具的情况下,有时候搞出来的也是蹩脚的语句,

Asp.Net Web API 2第六课——Web API路由和动作选择

原文:Asp.Net Web API 2第六课--Web API路由和动作选择 Asp.Net Web API 导航       Asp.Net Web API第一课--入门http://www.cnblogs.com/aehyok/p/3432158.html       Asp.Net Web API第二课--CRUD操作http://www.cnblogs.com/aehyok/p/3434578.html       Asp.Net Web API第三课--.NET客户端调用Web AP