在ODATA中获得了元数据。接下来是什么?

时间:2012-07-05 06:09:55

标签: url metadata odata

我正在尝试从我不太了解的服务中获取数据。

所以我得到了它的网址 http://ABC.com/ABC.svc

所以我想把元数据作为 http://ABC.com/ABC.svc/ $元数据

它给了我:

<EntityType Name="E1">
- <Key>
<PropertyRef Name="E1k1" /> 
</Key>
< Property Name="E2" Type="Edm.String" Nullable="true"
 m:FC_TargetPath="SyndicationTitle" ..>


<ComplexType Name="OptionV1">
<Property Name="Value" Type="Edm.Int32" Nullable="true" /> 

... and a lot more.

我如何找出ABC.svc / ???

旁边的内容

我想编写查询来访问数据。可以告诉我的下一步应该是什么? 从元数据生成此查询的任何学习资源都是非常好的。

由于

2 个答案:

答案 0 :(得分:1)

有两种方法:

1)使用服务文档。导航到应该返回服务文档的ABC.svc,它是一个ATOM服务有效负载,其中包含服务中可用的实体集的名称。有关此类示例,您可以转到http://services.odata.org/OData/OData.svc/。这应该返回一个包含三个集合(实体集)的文档。 href属性是实体集的相对URI(相对于xml:base,通常是服务的基础)。因此,例如,如果您的服务具有实体集E1Set,那么通常它的地址将是ABC.svc / E1Set。

2)使用$ metadata文档并假设通常的寻址方案(请注意,这通常适用于服务,但不必如此)。 $ metadata文档将定义实体集。这些中的每一个通常都由服务公开,通常遵循ABC.svc / EntitySetName的寻址方案。

导航到实体集后,您应该返回包含该集中实体的ATOM源。 $元数据将帮助您识别实体的形状和关系。

某些服务还具有服务操作或操作等。这些不在服务文档#1中公开。相反,它们仅作为FunctionImport元素在$ metadata中可见。它们通常遵循ABC.svc / FunctionImportName的寻址方案。但请注意,您可能需要了解有关服务操作的更多信息才能调用它(要使用的HTTP动词,参数是什么,它将执行什么操作等等)。

答案 1 :(得分:1)

LinqPad为开始使用OData服务提供了一种非常简单的方法(假设您熟悉LINQ)。如果你主要主要是从.NET使用这个应用程序,我建议从这个应用程序开始。您将它指向$ metadata端点,它会生成代理类,使您可以像使用普通的.NET应用程序一样使用OData服务。在结果日志选项卡上,它将输出用于查询OData服务的URL,然后您可以在Fiddler中选择并调整该服务。 (有关如何使用OData + Fiddler的更多信息,请参阅此博客文章。)

如果您主要使用JavaScript中的OData服务,您可能需要先了解URI conventions或更好地了解data.js