1. 程式人生 > >服務跨域處理&neo-app

服務跨域處理&neo-app

學習Fiori有一段時間了,今天詳細瞭解了一下neo-app配置檔案,特在此記錄一下。

Eclipse + SAP UI5外掛開發是不需要neo-app配置檔案的,這個檔案主要是針對於Web IDE開發工具,用來讀取一些核心類庫的配置資訊以及服務路徑代理的配置。

Web IDE專案是跑在一個BS結構的web版的IDE,它的host和APP將要請求的host是不一樣的,那麼這就導致了一個不同host跨域的問題。

跨域的問題在Eclipse開發時是通過proxy來處理的,程式碼長成這樣:

proxy/http/www.yourhost.com

Web IDE開發不支援這個處理方法,而是提供neo-app.json這個配置檔案,通過Destination配置來完成跨域的處理,這個檔案通常的路徑在工程的根目錄下面。

neo-app.json一般都是這樣的:

{
  "welcomeFile": "/webapp/index.html",
  "routes": [
    {
      "path": "/resources",
      "target": {
        "type": "service",
        "name": "sapui5",
        "entryPath": "/resources"
      },
      "description": "SAPUI5 Resources"
    },
    {
      "path": "/test-resources"
, "target": { "type": "service", "name": "sapui5", "entryPath": "/test-resources", "version":"1.44.7" }, "description": "SAPUI5 Test Resources" }, { "path": "/DemoService", "target": { "type": "destination", "name": "ODataDemoService"
, "version":"1.44.7" }
, "description": "Demo service" } ]
, "sendWelcomeFileRedirect": true }

welcomeFile是專案執行起來之後預設去找的路徑,判斷路徑是否有效,有效的話去載入工程的Component。

routes是工程路由的一個配置,這個路由並不是專案頁面跳轉的路由,而是這個工程核心庫的路徑配置以及服務要訪問的路徑配置。

routes第一項裡的"path": "/resources",這個resources要對應index.html裡src裡面的resources。路徑匹配之後才可以訪問到sap-ui-core.js這個核心類庫,否則是找不到的。

部分index.html程式碼:

<script id="sap-ui-bootstrap"
            src="../../resources/sap-ui-core.js"
            data-sap-ui-libs="sap.m"
            data-sap-ui-theme="sap_belize"
            data-sap-ui-compatVersion="edge"
            data-sap-ui-resourceroots='{"richard.odata.demoODataModelDemoCase": ""}'>
</script>

routes第二項裡的"path": "/test-resources", 和第一項配置大同小異,就不多說了。

第三項"path": "/DemoService", 這個就是服務反向代理配置。在controller裡呼叫服務的時候匹配DemoService就可以了,比如下面的controller部分程式碼:

var odataModel = new sap.ui.model.odata.v2.ODataModel('/DemoService/V2/(S(vwvvf40szqul4pkwqq50peal))/OData/OData.svc/', false);

裡面的 target “type”: “destination”, 這個destination主要是針對於SAP環境。 如果說gateway系統是在一個內網或者局域網裡,而Web IDE 和SAP是公有云服務,所以就需要這個destination將gateway的內網映射出來,使Web IDE 和SAP得以訪問。

destination的配置在賬號connectivity下面:
這裡寫圖片描述

在可以配置多個destination,每個destination對應一個name,這個name要配置在neo-app檔案中,要和target下面的name一致 ,即”name”: “ODataDemoService”。

下面這張圖片就是一個destination的所有屬性,這裡的Name就是neo-app檔案target下面的name,URL是服務要訪問的真正地址。

這裡寫圖片描述

到這裡neo-app的核心類庫配置和專案裡服務的代理詳解就完成了!