ui5-middleware-route

custom ui5 middleware extension for routing http and static requests

Usage no npm install needed!

<script type="module">
  import ui5MiddlewareRoute from 'https://cdn.skypack.dev/ui5-middleware-route';
</script>

README

JavaScript Style Guide

ui5-middleware-route

Custom UI5 middleware extension for routing http requests using request and static requests using serve-static with http basic authentication support.

For routing requests from a local development enviroment and/or serving ui5/odata/library resources from a remote host/static sources on your system.

Prerequisites

Make sure your project is using the latest UI5 Tooling.

Getting started

Install

Custom middleware

Add the custom middleware as a devDependency to your project.

With yarn:

yarn add -D ui5-middleware-route

Or npm:

npm i -D ui5-middleware-route

Additionally the custom task needs to be manually defined as a ui5 dependency in your project's package.json:

{
  "ui5": {
    "dependencies": [
      "ui5-middleware-route"
    ]
  }
}

Configure

If baseUrl is specified, the routing will proxy to a remote host. If not specified, it will route to a static source.

Custom middleware

Multiple sample configurations below. Register the custom task in your project's ui5.yaml:

server:
  customMiddleware:
    # Remote host routing for ui5 resources
    - name: ui5-middleware-route
      mountPath: /resources
      beforeMiddleware: compression
      configuration:
        baseUrl: https://ui5.sap.com
        path: /resources
    # Static source routing for ui5 resources
    - name: ui5-middleware-route
      mountPath: /resources
      beforeMiddleware: compression
      configuration:
        path: Y:/Development/sapui5/rt/resources         
    # Remote host routing for ui5 test resources
    - name: ui5-middleware-route
      mountPath: /test-resources
      beforeMiddleware: compression
      configuration:
        baseUrl: http://localhost:8080
        path: /test-resources
    # Remote host routing with http basic authentication. (If migrating from Web IDE, you can refer to the paths in neo-app.json) 
    - name: ui5-middleware-route
      mountPath: /sap/opu/odata/
      beforeMiddleware: compression
      configuration:
        debug: true
        baseUrl: http://companytesturl:8001
        path: /sap/opu/odata/
        secure: false
        auth:
          user: userTest
          pass: passTest       
    # Remote host routing for custom SAPUI5 Libraries deployed in Gateway       
    - name: ui5-middleware-route
      mountPath: /sap/bc/ui5_ui5
      beforeMiddleware: compression
      configuration:
        debug: true
        baseUrl: http://companytesturl:8001
        path: /sap/bc/ui5_ui5
        secure: false
        auth:
          user: userTest
          pass: passTest      
    # Static source routing for custom Local UI5 Library resources  
    - name: ui5-middleware-route
      mountPath: /resources/companytest
      beforeMiddleware: compression    
      configuration:
        path: /Users/Me/Desktop/Development/companytest-sapui5-library/src/companytest                            

Additional configuration

Environment file is supported. Define an .env file with your username and password:

UI5_ROUTE_USER=<username>
UI5_ROUTE_PASSWORD=<password>

If this is defined, you can omit the auth object above in your ui5.yaml

You can also define the UI5_ROUTE_BASEURL variable for your baseUrl config:

UI5_ROUTE_BASEURL=http://companytesturl:8001
    - name: ui5-middleware-route
      mountPath: /sap/opu/odata/
      beforeMiddleware: compression
      configuration:
        debug: true
        baseUrl: UI5_ROUTE_BASEURL
        path: /sap/opu/odata/
        secure: false

Options

The custom middleware accepts the following configuration options

name type Description mandatory default examples
debug boolean enable/disable debug logs no false true, false
baseUrl string baseUrl for proxying requests yes - https://services.odata.org, http://localhost:8080
path string path for routing requests no / /resources, /V2/Northwind/Northwind.svc
secure boolean reject self-signed certificates no true true, false
auth object credentials for http basic authentication no -
auth.user string user for http basic authentication no - userTest
auth.pass string password for http basic authentication no - userTest