odata - Odata 服务元数据失败
问题描述
后端团队提供了新的 Odata 服务。我在清单中声明并在控制器中使用它。它在我的系统中工作正常。但它在任何其他环境中都无法正常工作。我收到一条错误消息 - 元数据的初始加载失败。还有一些内部服务器错误。
清单.json
"ordersq": {
"uri": "/sap/opu/odata/sap/ZOrders_QUEUE_SRV/",
"type": "OData",
"settings": {
"odataVersion": "2.0",
"localUri": "localService/ZOrders_QUEUE_SRV/metadata.xml"
}
},
控制器:
var sServiceUrl = this.getOwnerComponent().getMetadata().getManifestEntry("sap.app").dataSources["ordersq"].uri;
var OdataModel = new sap.ui.model.odata.v2.ODataModel(sServiceUrl);
var sPath = "/BuyersQueueSet('" + mfOrder + "')";
OdataModel.read(sPath, {
success: this.queueSuccess.bind(this),
error: this.queueError.bind(this)
});
}
有什么我想念的吗。我必须为那个 metadata.xml 做点什么吗?我没有再配置任何东西。我只是复制粘贴的 localuri 它是如何为其他服务提供的,而不为这个新服务添加任何元数据。
解决方案
可能您遇到了 CORS 问题。如果您在请求 $metadata 时有 401 或 403,请检查网络跟踪。当您尝试从不同的服务器加载某些资源时,就会发生这种情况。
这是一个已知的常见问题,出于安全原因。有几种方法可以克服它,所有方法都有很好的记录。
一般来说,如果您使用 SAP Cloud Platform,只需在 Netweaver 服务器中配置一个指向您的服务的 Destination(您需要一个 Cloud Connector 来从云访问您的专用网络)。如果您在其他 Netweaver 服务器中部署您的应用程序,我认为最简单的解决方案是将 WebDispatcher 设置为反向代理。
另一种可能性是请求 $metadata 时出现 404 错误。如果你得到这个,那是因为你没有将你的请求路由到正确的 Netweaver 系统。确保配置 WebDispacher 以将某些 URL 解析到正确的系统。同样,大量的教程向您展示了如何做到这一点。
推荐阅读
- java - 如何在单独的行中显示错误消息
- java - 如何在aspectj中将一些参数从之前的方法传递到之后
- apache-spark - 错误:无法找到或加载主类 org.apache.spark.launcher.Main
- javascript - 使用 JS 从字符串中拆分 URL
- javascript - 如何通过开关条件访问数组?
- ios - 使用编码协议解析 JSON nil 值
- linux - 使用 .NET Core 在 Linux 上更改文件所有者
- java - java 'String[] args' 的 main 函数中的参数是否创建了一个对象?
- javascript - Firefox 插件:在弹出窗口中访问存储
- allure - Allure_behave 不起作用:AllureFormatter 未知