我是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>
答案 0 :(得分:2)
有几种方法可以访问特定属性,因为实体上有两种属性:非导航属性和导航属性。
非导航属性是基本类型属性,基本类型属性的集合,复杂类型属性,复杂类型属性或流属性。查询实体集或特定实体时,非导航属性的值默认为实体有效内容的内联:
e.g。当您查询时,ID
,Name
,Description
等内联:
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