1

我使用UI5 Tooling构建了一个 SAPUI5 应用程序,现在我无法将它连接到 OData 服务。
500内部服务器错误


由于 OData 服务的真实 url 是不公开的,所以我们称之为:

http://app99.sap.domain.com/sap/opu/odata/sap/Z_DOMAIN_SRV/

并在我的浏览器中打开它,$metadata?sap-language=DE最后添加,工作 - 我得到 XML 元数据文档。


这些是我尝试更改以连接到 OData 服务的文件:

  • 网络应用
    • 清单.json
  • 包.json
  • ui5.yaml

在中添加"dataSources"-object 和"models"-objectmanifest.json

{
  "sap.app": {
    ...
    "dataSources": {
      "oDataService": {
        "uri": "/sap/opu/odata/sap/Z_DOMAIN_SRV/",
        "type": "OData"
      }
    }
  },
  "sap.ui5": {
    ...
    "models": {
      ...
      "": {
        "dataSource": "oDataService",
        "preload": true,
        "settings": {
          "useBatch": false
        }
      }
    },
    ...
  }
}

我也尝试将"uri"值更改为真实链接http://app99.sap.domain.com/sap/opu/odata/sap/Z_DOMAIN_SRV/,但是我预计会收到一个Cross-Origin错误:
跨域错误

因此,我尝试通过将其添加到我的以下来设置代理package.json

{
  ...
  "devDependencies": {
    "ui5-middleware-simpleproxy": "^0.5.1"
  },
  "ui5": {
    "dependencies": [
      "ui5-middleware-simpleproxy"
    ]
  },
  ...
}

并将其添加到我的ui5.yaml文件中:

...
server:
  customMiddleware:
    - name: ui5-middleware-simpleproxy
      mountPath: /sap/opu/odata/sap/Z_DOMAIN_SRV
      afterMiddleware: compression
      configuration:
        baseUri: "http://app99.sap.domain.com/sap/opu/odata/sap/Z_DOMAIN_SRV/"

希望现在
http://localhost:8080/sap/opu/odata/sap/Z_DOMAIN_SRV/$metadata?sap-language=DE
会变成
http://app99.sap.domain.com/sap/opu/odata/sap/Z_DOMAIN_SRV/$metadata?sap-language=DE
并且它会起作用,但事实并非如此 - 我只是从顶部的屏幕截图中得到错误。

知道我缺少什么吗?
我真的想让它与这个ui5-middleware-simpleproxy 一起工作,因为我不想手动启动两台服务器(UI5 Tooling 一个和另一个用于代理)。目前我只需要做ui5 serve,一切都是开箱即用的。

4

1 回答 1

0

更改其中的配置后,ui5.yaml它起作用了。
我不太明白mountPathand之间的关系是如何baseUri工作的,以及为什么它会这样工作,但有些问题可以通过尝试和错误来解决,比如我的案例:D

...
server:
  customMiddleware:
    - name: ui5-middleware-simpleproxy
      mountPath: /sap/opu/odata/sap
      afterMiddleware: compression
      configuration:
        baseUri: "http://app99.sap.domain.com/sap/opu/odata/sap"
于 2020-10-06T10:04:02.257 回答