4

我按照 Apache Lingo 教程中概述的步骤创建了一个示例 OData 服务。

客户端收到的默认服务文档为:

{
  "@odata.context" : "$metadata",
  "value" : [
  {
    "name" : "Products",
    "url" : "Products"
  } ]
}

有没有办法配置 Olingo 以在文档中包含完整的元数据 uri?具体来说,假设服务在http://localhost:8080/DemoService/DemoService.svc/运行,我希望服务文档如下:

{
  "@odata.context" : "http://localhost:8080/DemoService/DemoService.svc$metadata",
  "value" : [
  {
    "name" : "Products",
    "url" : "Products"
  } ]
}
4

2 回答 2

4

您可以在调用序列化程序时设置元数据 url。那里的签名是: serviceDocument(ServiceMetadata serviceMetadata, String serviceRoot)

为了自己调用序列化程序,您需要注册自己的 ServiceDocumentProcessor 来覆盖服务文档的 DefaultProcessor。您可以从 DefaultProcessor 复制服务文档的代码并自己添加服务根。这是 DefaultProcessor 实现的链接:https ://github.com/apache/olingo-odata4/blob/3786699f018ac2deb1df9571d12bb61ab57f2d8a/lib/server-api/src/main/java/org/apache/olingo/server/api/processor /DefaultProcessor.java

于 2016-04-06T13:40:11.403 回答
1

将服务根 URI 设置为 EntityCollectionProcessor 和 EntityProcessor 中 ContextURL 的“serviceRoot”属性。

ContextURL contextUrl = ContextURL.with().entitySet(edmEntitySet).serviceRoot(<service root URI>).build();
于 2018-09-13T20:08:53.403 回答