如何使用 ui5-middleware-simpleproxy 摆脱“500 Internal Server Error”
How to get rid of "500 Internal Server Error" using ui5-middleware-simpleproxy
我使用 UI5 Tooling 构建了一个 SAPUI5 应用程序,但现在我无法将它连接到 OData 服务。
因为OData Service真正的url不是public,我们就叫它吧:
http://app99.sap.domain.com/sap/opu/odata/sap/Z_DOMAIN_SRV/
并在我的浏览器中打开它,在末尾添加 $metadata?sap-language=DE
,有效 - 我得到了 XML 元数据文档。
这些是我尝试更改以连接到 OData 服务的文件:
- webapp
- manifest.json
- package.json
- ui5.yaml
在 manifest.json
中添加一个 "dataSources"
对象和一个 "models"
对象
{
"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"
值更改为真实的 link、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 工具一台和另一台用于代理)。目前我只需要做 ui5 serve
一切都开箱即用。
更改 ui5.yaml
中的配置后,它起作用了。
我不太明白 mountPath
和 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"
我使用 UI5 Tooling 构建了一个 SAPUI5 应用程序,但现在我无法将它连接到 OData 服务。
因为OData Service真正的url不是public,我们就叫它吧:
http://app99.sap.domain.com/sap/opu/odata/sap/Z_DOMAIN_SRV/
并在我的浏览器中打开它,在末尾添加 $metadata?sap-language=DE
,有效 - 我得到了 XML 元数据文档。
这些是我尝试更改以连接到 OData 服务的文件:
- webapp
- manifest.json
- package.json
- ui5.yaml
在 manifest.json
"dataSources"
对象和一个 "models"
对象
{
"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"
值更改为真实的 link、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 工具一台和另一台用于代理)。目前我只需要做 ui5 serve
一切都开箱即用。
更改 ui5.yaml
中的配置后,它起作用了。
我不太明白 mountPath
和 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"