导出 (0) 打印
全部展开

请求实体

更新时间: 2014年2月

Query Entities操作查询表中的实体,包括 $filter$select 选项。

对于使用 $select 查询选项的请求,必须使用版本 2011-08-18 或更高版本发出。此外,DataServiceVersionMaxDataServiceVersion 标头必须设为 2.0。可以按如下方式构建Query Entities请求。建议使用 HTTPS。将 myaccount 替换为你的存储帐户名称,并将 mytable 替换为你的表名:

 

方法 请求 URI HTTP 版本

GET

https://myaccount.table.core.windows.net/mytable(PartitionKey='<partition-key>',RowKey='<row-key>')?$select=<comma-separated-property-names>

https://myaccount.table.core.windows.net/mytable()?$filter=<query-expression>&$select=<comma-separated-property-names>

HTTP/1.1

在请求 URI 中,要查询的实体集的地址可能有几种形式。有关详细信息,请参阅查询表和实体

在针对模拟的存储服务发出请求时,请将模拟器主机名和表服务端口指定为 127.0.0.1:10002,后跟模拟的存储帐户名称:

 

方法 请求 URI HTTP 版本

GET

http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='<partition-key>',RowKey='<row-key>')?$select=<comma-separated-property-names>

http://127.0.0.1:10002/devstoreaccount1/mytable()?$filter=<query-expression>?$select=<comma-separated-property-names>

HTTP/1.1

存储模拟器中的表服务在某些方面与 Windows® Azure™ 表服务有所不同。有关详细信息,请参阅 About Development Storage存储仿真程序与 Azure 存储服务之间的差异

Query Entities操作支持 OData 协议规范定义的查询选项。有关更多信息,请参见 OData URI 约定

下表介绍必需的和可选的请求标头。

 

请求标头 说明

Authorization

必需。指定身份验证方案、帐户名和签名。有关详细信息,请参阅Azure 存储服务身份验证

Datex-ms-date

必需。为请求指定协调世界时 (UTC)。有关详细信息,请参阅Azure 存储服务身份验证

x-ms-version

可选。指定用于此请求的操作的版本。有关详细信息,请参阅Azure 存储服务版本化

Accept

可选。指定响应负载已接受的内容类型。可能的值有:

  • application/atom+xml

  • application/json;odata=nometadata

  • application/json;odata=minimalmetadata

  • application/json;odata=fullmetadata

有关详细信息,请参阅表服务操作的负载格式

x-ms-client-request-id

可选。提供客户端生成的、附带 1 KB 字符限制的不透明值,在启用存储分析日志记录时,将在分析日志中记录该值。强烈建议使用此标头将客户端活动与服务器接收的请求相关联。有关详细信息,请参阅 关于存储分析日志记录Azure 日志记录:使用日志跟踪存储请求

无。

Request Syntax:
GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince  HTTP/1.1

Request Headers:
x-ms-version: 2013-08-15
x-ms-date: Mon, 25 Nov 2013 15:25:14 GMT
Authorization: SharedKeyLite myaccount:<some key>
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 2.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

响应包括 HTTP 状态代码、一组响应标头和响应正文。

此操作成功后返回状态代码 200(正常)。

有关状态代码的信息,请参阅状态和错误代码表服务错误代码

此操作的响应包括以下标头。该响应还可能包括其他标准 HTTP 标头。所有标准标头都符合 HTTP/1.1 协议规范

 

响应标头 说明

x-ms-continuation-NextPartitionKey

x-ms-continuation-NextRowKey

如果要返回的实体超过 1,000 个,超出服务器超时间隔,或者查询超过分区边界,则响应标头将包括 x-ms-continuation-NextPartitionKeyx-ms-continuation-NextRowKey 继续头。

有关使用继续标记的更多信息,请参见查询超时和分页

x-ms-request-id

此标头唯一地标识发出的请求,并且可用于解决请求问题。有关详细信息,请参阅API 操作故障排除

x-ms-version

指示用于执行请求的表服务的版本。针对 2009-09-19 和更高版本发出的请求将返回此标头。

Date

服务生成的 UTC 日期/时间值指示启动响应的时间。

Content-Type

指示负载的内容类型。该标头的值取决于 Accept 请求标头的值。可能的值有:

  • application/atom+xml

  • application/json;odata=nometadata

  • application/json;odata=minimalmetadata

  • application/json;odata=fullmetadata

有关有效内容类型的更多信息,请参见表服务操作的负载格式

Response Status:
HTTP/1.1 200 OK

Response Headers:
Content-Type: application/atom+xml;charset=utf-8
x-ms-request-id: 87f178c0-44fe-4123-a4c1-96c8fa6d9654
Date: Mon, 25 Nov 2013 15:25:14 GMT
x-ms-version: 2013-08-15
Connection: close

Query Entities操作以 OData 实体集的形式返回表中实体的列表,该实体集可以是 JSON 或 Atom 馈送,具体取决于请求的 Accept 标头。

下面是对 Customers 表的 Query Entities 操作的请求 URI 示例。

GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince

下面是 Atom 馈送的响应正文:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xml:base="https://myaccount.table.core.windows.net">
   <id>https://myaccount.table.core.windows.net/Customers</id>
   <title type="text">Customers</title>
   <updated>2013-08-22T00:50:32Z</updated>
   <link rel="self" title="Customers" href="Customers" />
   <entry m:etag="W/&quot;0x5B168C7B6E589D2&quot;">
      <id>https://myaccount.table.core.windows.net/Customers(PartitionKey='Customer',RowKey='Name')</id>
      <category term="myaccount.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
      <link rel="edit" title="Customers" href="Customers(PartitionKey='Customer',RowKey='Name')" />
      <title />
      <updated>2013-08-22T00:50:32Z</updated>
      <author>
         <name />
      </author>
      <content type="application/xml">
         <m:properties>
            <d:PartitionKey>Customer</d:PartitionKey>
            <d:RowKey>Name</d:RowKey>
            <d:Timestamp m:type="Edm.DateTime">2013-08-22T00:20:16.3134645Z</d:Timestamp>
            <d:CustomerSince m:type="Edm.DateTime">2008-10-01T15:25:05.2852025Z</d:CustomerSince>
         </m:properties>
      </content>
   </entry>
</feed>

JSON 响应的馈送如下所示:

无元数据:

{
   "value":[
      {
         "PartitionKey":"Customer",
         "RowKey":"Name",
         "Timestamp":"2013-08-22T00:20:16.3134645Z",
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"
      }
   ]
}

最少元数据:

{
   "odata.metadata":"https://myaccount.table.core.windows.net/$metadata#Customers",
   "value":[
      {
         "PartitionKey":"Customer",
         "RowKey":"Name",
         "Timestamp":"2013-08-22T00:20:16.3134645Z",
         "CustomerSince@odata.type":"Edm.DateTime",
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"
      }
   ]
}

完整元数据:

{
   "odata.metadata":" https://myaccount.table.core.windows.net/metadata#Customers",
   "value":[
      {
         "odata.type":"myaccount.Customers",
         "odata.id":"https://myaccount.table.core.windows.net/Customers(PartitionKey=Customer',RowKey='Name')",
         "odata.etag":"W/\"0x5B168C7B6E589D2\"",
         "odata.editLink":"Customers(PartitionKey=Customer',RowKey='Name')",
         "PartitionKey":"Customer",
         "RowKey":"Name",
         "Timestamp@odata.type":"Edm.DateTime",
         "Timestamp":"2013-08-22T00:20:16.3134645Z",
         "CustomerSince@odata.type":"Edm.DateTime",
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"
      }
   ]
}

帐户所有者以及使用有权执行此操作的共享访问签名的任何人可以执行此操作。

对表服务的查询一次最多可以返回 1,000 个实体,最长可能执行 5 秒时间。如果结果集包含的实体超过 1,000 个,查询未在 5 秒内完成,或者查询超过分区边界,则响应包括含有一组继续标记的自定义标头。继续标记可用于构造后续请求以获取下一页数据。有关继续标记的更多信息,请参见查询超时和分页

对于使用 $select 查询选项的投影请求,必须使用版本 2011-08-18 或更新的版本发出。返回的最多属性数为 255,所有投影属性都将包括在响应正文中,即使属性不属于所返回的实体也是如此。例如,如果请求包括投影实体不包含的属性,则缺少的属性将用 null 特性标记。以上响应正文示例包括 Address 属性,该属性并不属于投影实体,因此该属性为 null:<d:Address m:null=”true” />

分配给请求用于调度和处理查询的总时间是 30 秒,其中包括用于执行查询的 5 秒。

请注意,右侧的查询表达式必须为常量;不能引用表达式右侧的属性。有关构建查询表达式的更多信息,请参见查询表和实体

查询表达式不能包含 Null 值。如果要在查询字符串中使用以下字符,必须对这些字符进行编码:

  • 正斜杠 (/)

  • 问号 (?)

  • 冒号 (:)

  • “At”符号 (@)

  • 与号 (&)

  • 等号 (=)

  • 加号 (+)

  • 逗号 (,)

  • 美元符号 ($)

任何可以执行验证和发送 HTTP GET 请求的应用程序都可以查询表中的实体。

有关支持通过 LINQ 针对表服务执行的查询操作的更多信息,请参见表服务支持的查询运算符编写针对表服务的 LINQ 查询

显示:
© 2014 Microsoft