当前位置 > 首页 > Asp.net

【ASP.NET Web API教程】2.1 创建支持CRUD操作的Web API

11/12/2012 7:34:00 AM来源:Asp.net

2.1 Creating a Web API that Supports CRUD Operations
2.1 创建支持CRUD操作的Web API

By Mike Wasson | January 28, 2012
作者:Mike Wasson | 日期:2012-1-28

本文引自:http://www.asp.net/web-api/overview/creating-web-apis/creating-a-web-api-that-supports-crud-operations

注:本文是ASP.NET Web API系列教程第2章中的第1篇,因此标题采用了“2.1” — 译者注

This tutorial shows how to support CRUD operations in an HTTP service using ASP.NET Web API.
本教程展示如果在使用ASP.NET Web API的HTTP服务中支持CRUD操作。

CRUD stands for "Create, Read, Update, and Delete," which are the four basic database operations. Many HTTP services also model CRUD operations through REST or REST-like APIs.
CRUD是指“创建(C)、读取(R)、更新(U)和删除(D)”,它们是四个基本的数据库操作。许多HTTP服务也会通过REST或类REST的API模拟CRUD操作。

In this tutorial, you will build a very simple web API to manage a list of products. Each product will contain a name, price, and category (such as "toys" or "hardware"), plus a product ID.
在本教程中,你将建立一个十分简单的Web API来管理一列产品。每个产品包含一个name(名称)、price(价格)和category(分类)(如,“toys(玩具)”、“hardware(硬件)”等),还有一个产品的ID。

The products API will expose following methods.
这个产品API将暴露以下方法(见表2-1)。

表2-1. Products API暴露的HTTP方法
Action
动作
HTTP method
HTTP方法
Relative URI
相对URI
Get a list of all products
获取全部产品列表
GET/api/products
Get a product by ID
通过ID获取一个产品
GET/api/products/id
Get a product by category
通过分类获取产品
GET/api/products?category=category
Create a new product
创建一个新产品
POST/api/products
Update a product
更新一个产品
PUT/api/products/id
Delete a product
删除一个产品
DELETE/api/products/id

Notice that some of the URIs include the product ID in path. For example, to get the product whose ID is 28, the client sends a GET request for http://hostname/api/products/28.
注意,有些URI在路径中包含了产品ID。例如,要得到ID为28的产品,客户端要发送一个http://hostname/api/products/28的GET请求。

Resources
资源

The products API defines URIs for two resource types:
这个产品API定义了两种资源类型的URI(见表2-2):

表2-2. 资源类型
Resource
资源
URI
The list of all the products.
所有产品的列表
/api/products
An individual product.
个别产品
/api/products/id

Methods
方法

The four main HTTP methods (GET, PUT, POST, and DELTETE) can be mapped to CRUD operations as follows:
四种主要的HTTP方法(GET、PUT、POST和DELETE)可以按如下方式映射到CRUD操作:

  • GET retrieves the representation of the resource at a specified URI. GET should have no side effects on the server.
    GET接收指定URI上的资源表达式。GET在服务器上应当没有副效应。
  • PUT updates a resource at a specified URI. PUT can also be used to create a new resource at a specified URI, if the server allows clients to specify new URIs. For this tutorial, the API will not support creation through PUT.
    PUT更新指定URI上的资源。如果服务器允许客户端指定新URI,PUT也可以用于在指定URI上创建新资源。对于本教程,API将不支持通过PUT的创建。
  • POST creates a new resource. The server assigns the URI for the new object and returns this URI as part of the response message.
    POST创建新资源。服务器为新对象分配URI,并把这个URI作为响应消息的一部分加以返回。
  • DELETE deletes a resource at a specified URI.
    DELETE删除指定URI上的资源。

Note: The PUT method replaces the entire product entity. That is, the client is expected to send a complete representation of the updated product. If you want to support partial updates, the PATCH method is preferred. This tutorial does not implement PATCH.
注:PUT方法替换整个产品实体。即,期望客户端发送一个更新产品的完整表达式。如果想支持部分更新,最好用PATCH方法。本教程不实现PATCH。

Create a New Web API Project
创建新的Web API项目

Start by running Visual Studio 2010 and select New Project from the Start page. Or, from the File menu, select New and then Project.
启动VS 2012,并在“开始页”选择“新项目”。或从“文件”菜单选择“新建”,然后选择“项目”。

In the Templates pane, select Installed Templates and expand the Visual C# node. Under Visual C#, select Web. In the list of project templates, select ASP.NET MVC 4 Web Application. Name the project "ProductStore" and click OK.
在“模板”面板中选择“已安装模板”,并展开“Visual C#”节点。选择该节点下的“Web”。在项目模板列表中选择“ASP.NET MVC 4 Web应用程序”。将此项目命名为“ProductStore”,点击“OK”(见图2-1)。

WebAPI2-1

图2-1. 创建ProductStore项目

In the New ASP.NET MVC 4 Project dialog, select Web API and click OK.
在“新的ASP.NET MVC 4项目”对话框中选择“Web API”,点击“OK”(如图2-2)。

WebAPI2-2

图2-2. 选择Web API模板

Adding a Model
添加模型

A model is an object that represents the data in your application. In ASP.NET Web API, you can use strongly typed CLR objects as models, and they will automatically be serialized to XML or JSON for the client.
模型是表示你应用程序中数据的一种对象。在ASP.NET Web API中,你可以使用强类型的CRL(公共语言运行时)对象作为模型,而它们将被自动化地序列化成用于客户端的XML或JSON。

For the ProductStore API, our data consists of products, so we'll create a new class named Product.
对于这个ProductStore API,其数据由产品组成,因此,我们将创建一个名为Product的新类。



  • TODAY ONLY - Win a free pass to the Patterns & Practices Summit

    7/10/2009 9:30:00 PM

    Telerik is  giving away a free pass to the 2009 PNP Summit ($1900 value) along with a Telerik

  • 模板:SharePoint2007解决方案包

    1/22/2007 11:48:00 AM

    我们知道,借助SharePoint解决方案包(SharePoint Solution Package),也就是后缀为WSP的文件,可以很轻松的帮我们把WebPart、事件处理程序、Feature等等

  • 通过源代码研究ASP.NET MVC中的Controller和View(六)

    11/27/2010 3:01:00 AM

    通过源代码研究ASP.NET MVC中的Controller和View(一) 通过源代码研究ASP.NET MVC中的Controller和View(二) 通过源代码研究ASP.

  • Google 图表 API 实际Web的应用

    6/6/2009 8:48:00 PM

    Google 图表 API 会返回一幅 PNG 格式的图片来响应一个网址。可以生成多种类型的图片,包括折线图、条形图和饼图。您可以为每种图片类型指定属性,例如大小、颜色和标签。 通过将网

  • 一次POC的总结

    5/11/2009 9:02:00 PM

    最近好久都没发文章了,因为一直在做一个关于dw的POC,主要就是使用SSIS来做一些ETL的东西,现在拿出来和大家分享一下。 数据源文件 对于ETL来说经常会遇到文本形式的源文件,如果在

  • 利用Razor在ASP.NET MVC中的实现,自定义视图引擎框架(2)

    8/30/2011 4:05:00 PM

    ASP.NET MVC3开始使用Razor作为其视图引擎,取代了原来ASP.NET Web Form引擎。笔者最近研究了一下MVC3对Razor的实现,从中找到一个切入点,能够让我们自定义基于Raz

  • WSE 3.0 UsernameToken SOAP消息分析

    3/16/2007 4:23:00 PM

    摘要: WSE 3.0使用UsernameToken时,几个主要不同的配置下,SOAP消息的对照, 阅读全文 RicCC 2007-03-16 16:00 发表评论

  • Beware: Upgrade to ASP.NET MVC 2.0 with care if you use AntiForgeryToken

    3/22/2010 3:58:00 PM

    If youre thinking of upgrading to MVC 2.0, and you take advantage of the AntiForgeryToken support t

  • 我想请教一下COM, ATL和.NET三者的关系和未来

    6/22/2011 10:28:00 PM

    因为大作业要用了个COM组件,所以了解了一下,发现COM还是比较神奇的~ 不过COM这项技术发展了十几年了,如今微软手上的王牌无疑是.NET。但我对此只是知道而已,我对微软系的技术完全不了解。

  • 小心委托

    9/19/2007 10:48:00 PM

    小心委托 在 C# 语言规范中,对委托( delegate )的描述有这么一句话:“委托同时封装了对象实例和方法”,我用一段小程序来说明这句话的含义,以