【翻译】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

目录
相关文章
|
3天前
|
人工智能 搜索推荐 IDE
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
本文介绍了Web Unlocker API、Web-Scraper和SERP API三大工具,助力解决AI训练与微调数据集获取难题。Web Unlocker API通过智能代理和CAPTCHA绕过技术,高效解锁高防护网站数据;Web-Scraper支持动态内容加载,精准抓取复杂网页信息;SERP API专注搜索引擎结果页数据抓取,适用于SEO分析与市场研究。这些工具大幅降低数据获取成本,提供合规保障,特别适合中小企业使用。粉丝专属体验入口提供2刀额度,助您轻松上手!
31 2
|
15天前
|
人工智能 运维 安全
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
39 3
|
4月前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
1月前
|
XML JSON API
Understanding RESTful API and Web Services: Key Differences and Use Cases
在现代软件开发中,RESTful API和Web服务均用于实现系统间通信,但各有特点。RESTful API遵循REST原则,主要使用HTTP/HTTPS协议,数据格式多为JSON或XML,适用于无状态通信;而Web服务包括SOAP和REST,常用于基于网络的API,采用标准化方法如WSDL或OpenAPI。理解两者区别有助于选择适合应用需求的解决方案,构建高效、可扩展的应用程序。
|
6月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
102 4
|
1月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
3月前
|
开发框架 数据可视化 .NET
.NET 中管理 Web API 文档的两种方式
.NET 中管理 Web API 文档的两种方式
73 14
|
4月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
142 7
Spring Boot 入门:简化 Java Web 开发的强大工具
|
5月前
|
开发框架 .NET 程序员
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
Autofac 是一个轻量级的依赖注入框架,专门为 .NET 应用程序量身定做,它就像是你代码中的 "魔法师",用它来管理对象的生命周期,让你的代码更加模块化、易于测试和维护
152 4
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
|
4月前
|
开发框架 .NET PHP
ASP.NET Web Pages - 添加 Razor 代码
ASP.NET Web Pages 使用 Razor 标记添加服务器端代码,支持 C# 和 Visual Basic。Razor 语法简洁易学,类似于 ASP 和 PHP。例如,在网页中加入 `@DateTime.Now` 可以实时显示当前时间。