如何在 Olingo OData 服务文档中包含完整的元数据 URI?

dgd*_*dev 5 odata olingo

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

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

{
  "@odata.context" : "$metadata",
  "value" : [
  {
    "name" : "Products",
    "url" : "Products"
  } ]
}
Run Code Online (Sandbox Code Playgroud)

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

{
  "@odata.context" : "http://localhost:8080/DemoService/DemoService.svc$metadata",
  "value" : [
  {
    "name" : "Products",
    "url" : "Products"
  } ]
}
Run Code Online (Sandbox Code Playgroud)

小智 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 /默认处理器.java