使用 mock 数据在本地运行 SAP Fiori Elements 应用的工作原理
本系列的前兩篇文章:
- 在沒有任何前端開發經驗的基礎上, 創建第一個 SAP Fiori Elements 應用
- 如何使用 mock 數據在本地運行 SAP Fiori Elements
本文研究 Fiori Elements 應用本地運行,而不是連接遠程數據庫,消費服務器 OData 服務的工作原理。
本地運行 SAP Fiori Elements 應用時,訪問的 index.html 為:test 文件夾下的 flpSandboxMockServer.html
這個 id 為 sap-ui-bootstrap 的 script 標簽里,定義了 SAP UI5 bootstrap 需要加載的 JavaScript Resource 文件:
這個 script data-sap-ui-use-mockserver 標簽里,定義了 為 true:
使用 mock server 的標志位,在 locate-reuse-libs.js 里被訪問。在 callback 里執行 mock server 的 init 操作。
在 mock 模式下運行,metadata 的 url 也指向本地 xml 文件了:
mock server url:/sap/opu/odata/sap/SEPMRA_PROD_MAN/ 和正常模式下運行的 OData server url 相比沒有變化,
關鍵的一個方法:
// load local mock dataoMockServer.simulate(sMetadataUrl, {sMockdataBaseUrl: sJsonFilesUrl,bGenerateMissingMockData: true});看 simulate 方法的注釋:
通過指定 Metadata url 和 mockdata base url,來模擬一個 OData 服務。
每個 entity type 的 mockdata 必須單獨存放在一個 json 文件里,且 json 文件的名稱,必須和 entity type 完全一致。
1981 行的 _refreshData 方法,會加載本地存儲的 json 文件包含的 mockdata:
接下來,是 mockserver 為不同類型的 HTTP 請求,注冊不同的 handler. 這樣,當 mock server 收到 SAP Fiori Elements 應用發起的 HTTP 請求時,這些 handler 會被調用,來返回 mock 過的數據。
每個 HTTP 請求 handler 在注冊的時候,都會綁定一個 path,如下圖 2179 的正則表達式所示,這代表了該 handler 能夠處理哪些路徑的 HTTP 請求。例如,當 url 包含 metadata 字符串時,觸發下圖的 metadata handler,將本地 localService 文件夾內的 metadata.xml,返回給請求的發起方。
mock server 響應其他請求的原理類似,這里就不再贅述了。
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的使用 mock 数据在本地运行 SAP Fiori Elements 应用的工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用 mock 数据在本地运行 SA
- 下一篇: 人生平淡经典感悟短句 平淡幸福的唯美句子