首页 > 其他分享 >SAP Fiori Elements 应用 OData 元数据请求 url 里的模型名称决定逻辑

SAP Fiori Elements 应用 OData 元数据请求 url 里的模型名称决定逻辑

时间:2023-07-29 16:47:46浏览次数:34  
标签:Elements 服务 定义 url 数据源 OData manifest sap

问题

我用 yarn start 本地启动一个 SAP Fiori Elements 应用,在 Chrome 开发者工具 network 面板,观察到一个 OData metadata 请求的 url 如下:

http://localhost:8080/sap/opu/odata/sap/SEPMRA_PROD_MAN/$metadata?sap-value-list=none&sap-language=EN

这个 OData 服务名称 SEPMRA_PROD_MAN,运行时是如何决定出来的?

查看 Component.js 文件里的函数 Component._createManifestModels

我们查看变量 mModels, 发现有三个字段:

其中 ""字段的值,来自 manifest.json 文件的 models 区域的同名字段:

dataSource 的值指向 mainService,后者的 uri 字段就是 Fiori Elements 应用运行时,发起 OData 元数据请求的 url:

在 SAP UI5 应用中,manifest.json文件是一个重要的配置文件。它充当了应用的描述符,定义了应用的元数据、模型、服务、i18n(国际化)等等。我们可以将其看作是一个集中的配置中心,其中所有的配置都在一个地方,使得代码更容易维护,也更容易理解。

manifest.json文件中,dataSources部分是非常重要的一部分,它定义了应用如何连接到后端服务。这个区域可以声明一个或者多个数据源,每一个数据源对应一个后端服务。这些服务可以是 OData 服务,也可以是其他类型的服务。

当我们在manifest.json文件中定义了数据源后,我们可以在应用的其他部分通过这个数据源的名称来引用这个服务,而不需要记住具体的 URL。这样做的好处是,如果服务的 URL 发生变化,我们只需要在一个地方更新它,而不需要搜索整个代码库来找到所有使用这个服务的地方。

下面是一个manifest.json文件中dataSources区域的例子:

{
    "sap.app": {
        "dataSources": {
            "mainService": {
                "uri": "/sap/opu/odata/sap/ZMAIN_SRV/",
                "type": "OData",
                "settings": {
                    "odataVersion": "2.0"
                }
            },
            "secondService": {
                "uri": "/sap/opu/odata/sap/ZSECOND_SRV/",
                "type": "OData",
                "settings": {
                    "odataVersion": "2.0"
                }
            }
        }
    }
}

在上面的例子中,我们定义了两个数据源,它们的名字分别是mainServicesecondService。每个数据源都有一个uri属性,这个属性定义了服务的 URL。type属性定义了服务的类型,这里我们使用的是 OData 服务。settings对象包含了服务的其他配置,比如 OData 的版本。

定义了数据源之后,我们就可以在应用的其他部分使用这个数据源了。例如,我们可以在models区域定义一个模型,并且将这个模型关联到一个数据源:

{
    "sap.ui5": {
        "models": {
            "": {
                "dataSource": "mainService",
                "preload": true
            },
            "secondModel": {
                "dataSource": "secondService",
                "preload": true
            }
        }
    }
}

在上面的例子中,我们定义了两个模型,它们分别关联到了我们之前定义的两个数据源。这样,当我们在应用中使用这两个模型时,SAP UI5 会自动的使用对应的数据源连接到后端服务。

总结

总的来说,manifest.json文件中的dataSources区域是用来定义应用如何连接到后端服务的。它使得服务的配置集中在一个地方,使得代码更易于维护,也更易于理解。

标签:Elements,服务,定义,url,数据源,OData,manifest,sap
From: https://www.cnblogs.com/sap-jerry/p/17590029.html

相关文章

  • 如何在 SAP Fiori Elements 应用的 manifest.json 里定义注解
    在SAPFioriElements应用中,manifest.json文件是应用的主要配置文件,其中定义了应用的元数据、模型、服务等信息。其中,dataSources区域负责描述应用使用的数据源,比如OData服务或者其他类型的后端服务。在dataSources区域的settings字段中,我们可以定义annotations,它们是......
  • 关于 Fiori Elements 应用 manifest.json 的 localURI 字段
    SAPFioriElements是一个开发框架,它提供了一种创建SAPFiori应用的标准化方法。这些应用具有一致的用户体验,并且具有适应各种设备和屏幕尺寸的能力。SAPFioriElements的设计目标是简化开发过程,降低维护成本,并提高应用的质量。在SAPFioriElements应用中,manifest.json文件用于......
  • SAP Fiori Elements 应用加载时的 url 参数 sap-ui-xx-viewCache=false
    SAPFioriElements是SAP提供的一种UI技术,其主要目的是提供一种快速、简单、一致且易于维护的方式来开发SAP用户界面。而sap-ui-xx-viewCache=false是一个URL参数,用于控制FioriElements应用的视图缓存。在SAPFioriElements中,视图缓存是一个可以提高应用性能的......
  • SAP UI5 OData 请求 url 中的参数 sap-value-list=none
    SAPUI5是一个基于JavaScript的用户界面技术,用于构建企业级web应用程序。OData(OpenDataProtocol)是一个开放标准,允许消费者查询和操作数据。在SAPUI5应用中,OData服务用于处理数据交换。当SAPUI5应用加载时,应用会自动发起一个OData元数据请求,这是因为应用需要从服务端获取元数......
  • url编码
    1、介绍(1)编码方案url中存在某些敏感字符作为其结构描述符,如果要表达敏感字符作为普通文本,需要进行转码,即url编码。url编码是将字符转为utf-8,然后对每个字节前加%字符。一般,会对url结构描述符、ascii无法直接表达的字符、以及超出ascii编码的字符进行转码,而其他是否转码均可。......
  • 【LibCurl】HomeBrew 安装 LibCurl & CMake 配置
    LibCurl在官网中明确指出支持HomeBrew进行安装。那么在macOS端的安装就不会想Win下需要根据版本进行编译了,方便许多brewinstallcurl#安装完成后会提示curl在macOS库文件和依赖文件的安装路径CMake配置CMake是一种跨平台的构建工具,可以帮助我们编译、配置......
  • 《http篇》通过curl库实现http服务
    编译和引用参考链接:https://blog.csdn.net/weixin_44122235/article/details/128969128参考链接里写的非常详细,虽然我只参考了编译和引用的部分,还是建议大家看一下。下载官方(旧):https://curl.haxx.se/download.html官方(新):https://curl.se/download.htmlgithub:https://github.......
  • Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported]
    @RequestParam用来处理Content-Type为application/x-www-form-urlencoded编码的内容,Content-Type默认为该属性。可以用于接收URL中的参数并捆绑到方法的参数中,也可以接受post请求体中的Content-Type为application/x-www-form-urlencoded的数据。(post比较常用的是json格式......
  • n stable报错curl: (7) Failed to connect to nodejs.org port 443: Connection refus
    nstable报错curl:(7)Failedtoconnecttonodejs.orgport443:ConnectionrefusedError:failedtodownloadversionindex(https://nodejs.org/dist/index.tab)使用淘宝源exportN_NODE_MIRROR=https://npm.taobao.org/mirrors/nodenstable......
  • 爬虫基本工具:urllib丶requests丶selenium丶pytesseract
    urllib来实现cookie和ip代理1fromurllib.requestimportRequest,build_opener,urlopen2fromfake_useragentimportUserAgent3fromurllib.parseimporturlencode4fromurllib.requestimportHTTPCookieProcessor5fromhttp.cookiejarimportCookieJ......