首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问OData属性

访问OData属性
EN

Stack Overflow用户
提问于 2014-10-14 15:27:19
回答 1查看 2.5K关注 0票数 0

我对oData网络服务非常陌生。我想在移动平台上获得并填充以下输出。我可以在移动平台http://services.odata.org/V4/Northwind/Northwind.svc/Customers上填充以下url数据。然而,有一次我开始做另一个练习。我被困在下面的odata输出中。如何访问属性,如名称或描述?

代码语言:javascript
运行
复制
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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-15 02:41:22

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

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

例如,IDNameDescription等在查询时是内联的:

代码语言:javascript
运行
复制
GET http://services.odata.org/v4/odata/odata.svc/Products

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

代码语言:javascript
运行
复制
GET http://services.odata.org/v4/odata/odata.svc/Products?$select=ID,Name

通过附加这样的查询选项,您将只找到所需的有效负载的属性。

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

代码语言:javascript
运行
复制
GET http://services.odata.org/v4/odata/odata.svc/Products(1)/ID

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

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

代码语言:javascript
运行
复制
GET http://services.odata.org/v4/odata/odata.svc/Products?$expand=Categories

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

代码语言:javascript
运行
复制
GET http://services.odata.org/v4/odata/odata.svc/Products(1)/Categories

要了解更多关于如何针对不同场景发出不同的OData请求以及URL约定是什么的更多信息,请参阅以下材料:

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

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26364576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档