访问OData属性

时间:2014-10-14 15:27:19

标签: odata

我是oData webservices的新手。我想在移动平台上获取并填充以下输出。我可以在移动平台http://services.odata.org/V4/Northwind/Northwind.svc/Customers上填充以下网址数据。但是,一旦我开始做另一项运动。我坚持使用以下odata输出。我怎样才能访问名称或描述等属性?

PUT /OData/OData.svc/Products(1) HTTP/1.1 Host: services.odata.org DataServiceVersion:
  1.0 MaxDataServiceVersion: 2.0 accept: application/atom+xml 
  content-type: application/atom+xml Content-Length: 1181 
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Entry xml:base="http://services.odata.org/OData/OData.svc/" 
    xmlns:d=" http://schemas.microsoft.com/ado/2007/08/dataservices"
    xmlns:m=" http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" 
    xmlns="http://www.w3.org/2005/Atom"> 
  <id>http://services.odata.org/OData/OData.svc/Products(1)</id>
  <title type="text"></title> 
  <updated>2010-02-28T10:23:02Z</updated>
  <author> 
    <name /> 
  </author> 
  <Link rel="edit" title="Product" href="Products(1)" /> 
  <category term="DataServiceProviderDemo.Product" 
      scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> 
  <content type="application/xml"> 
    <m:properties> 
      <d:ID m:type="Edm.Int32">1</d:ID>
      <d:Name>Milk</d:Name> 
      <d:Description>Low fat milk</d:Description>
      <d:ReleaseDate m:type="Edm.DateTime">1995-10-21T00:00:00</d:ReleaseDate>
      <d:DiscontinuedDate m:type="Edm.DateTime" m:null="true" /> 
      <d:Rating m:type="Edm.Int32">4</d:Rating>
      <d:Price m:type="Edm.Decimal">4.5</d:Price> 
    </m:properties> 
  </content>
</Entry>

1 个答案:

答案 0 :(得分:2)

有几种方法可以访问特定属性,因为实体上有两种属性:非导航属性和导航属性。

非导航属性是基本类型属性,基本类型属性的集合,复杂类型属性,复杂类型属性或流属性。查询实体集或特定实体时,非导航属性的值默认为实体有效内容的内联:

e.g。当您查询时,IDNameDescription等内联:

GET http://services.odata.org/v4/odata/odata.svc/Products

如果要选择所需的属性,可以使用$select查询选项。 E.g。

GET http://services.odata.org/v4/odata/odata.svc/Products?$select=ID,Name

通过附加此类查询选项,您将只找到内联有效内容所需的属性。

如果您只想访问属性值,则应将属性名称作为段附加到单个实体的请求URL。 E.g。

GET http://services.odata.org/v4/odata/odata.svc/Products(1)/ID

还有另一种属性:导航属性。它们是实体类型属性或实体类型属性的集合。导航属性描述服务中不同实体之间的关系。一个示例是Categories实体上的Product导航属性。

默认情况下,导航属性未显示为实体有效内容的内联。为了将它们包含在内,需要使用$expand查询选项:

GET http://services.odata.org/v4/odata/odata.svc/Products?$expand=Categories

如果您只想访问导航属性,请求URL与非导航属性类似:

GET http://services.odata.org/v4/odata/odata.svc/Products(1)/Categories

要详细了解如何针对不同方案发出不同的OData请求以及URL约定,以下材料会有所帮助:

OData.org上的教程:http://www.odata.org/getting-started/basic-tutorial/(基本),http://www.odata.org/getting-started/advanced-tutorial/(高级)。

OData V4的URL约定规范:http://docs.oasis-open.org/odata/odata/v4.0/os/part2-url-conventions/odata-v4.0-os-part2-url-conventions.html

OData V4的协议规范:http://docs.oasis-open.org/odata/odata/v4.0/os/part1-protocol/odata-v4.0-os-part1-protocol.html