通过 REST API 的 SAPUI5 JSON 模型 - 在 xs-app.json / BTP 中使用 DESTINATION 无法正确解析

SAPUI5 JSON Model via REST API - Using DESTINATION in xs-app.json / BTP does not resolve Correctly

提问人:Tim Cashmore 提问时间:10/21/2023 更新时间:10/24/2023 访问量:119

问:

创建对 REST API 的调用,以加载要绑定到视图/控制器的 JSON 模型。使用托管应用程序路由器创建自由式 Fiori 应用程序

  1. 在视图控制器的 oninit 函数中,尝试加载要绑定到视图的 JSON 模型

例如 (new JSONModel()).loadData(“/Products”);注意:完整 URL 为 = https://dummyjson.com/Products)

  1. xs-app.json条目如下 { “source”: “^/产品”, “destination”: “APITEST”, “authenticationType”: “xsuaa”, “csrfProtection”:假 },

  2. BTP 中配置了无身份验证且 URL = https://dummyjson.com/ 的 APITEST 目标

  3. HTML5 应用部署到 BTP Cloud Foundry

单击 BTP Cockpit HTML5 应用列表中的应用程序时出现 404 错误。但是,如果我将步骤 1 更改为将前缀 /Products 删除为 Products,它会正确解析。例如

(new JSONModel()).loadData(“Products”) 很好。但更复杂的是,当我将应用程序部署到 Build App 启动板时,它停止工作!铌。我已经尝试了启动板的两种变体,但它不适用于前导/或不使用。

关于我如何错误地配置文件以解决此问题的任何指示。

在这种情况下(没有启动板)并在相对 URL 中使用“产品”,当我通过 Chrome 中的开发人员工具查看“网络”时,解析的 URL 将应用程序名称作为通过目标服务访问的 URL 的一部分

SAPUI5 SAP-Fiori SAP 云铸造厂

评论


答:

0赞 Tim Cashmore 10/24/2023 #1

意识到在使用以下实用程序在 JSON 模型上调用 loadData() 方法时,您需要正确地为 URL 添加前缀

sap.ui.require.toUrl(appPath+“/Products”)。

var appId = this.getOwnerComponent().getManifestEntry(“/sap.app/id”); var appPath = appId.replaceAll(“.”, “/”);

摘自以下博客,但使用 sap.ui.require.toUrl 作为 getModulePath 现已弃用。

https://blogs.sap.com/2020/09/08/calling-external-api-in-custom-task-ui-of-workflow-in-cloud-foundry/