Skip to content

custom ui5 middleware extension for proxying http requests

License

Notifications You must be signed in to change notification settings

pwasem/ui5-middleware-http-proxy

Repository files navigation

JavaScript Style Guide

ui5-middleware-http-proxy

Custom UI5 middleware extension for proxying http requests using request with additional http basic authentication support.

Useful for proxying requests to a remote service from a local development enviroment or serving ui5 resources from a remote host.

Works well with openui5-sdk-docker.

Prerequisites

Make sure your project is using the latest UI5 Tooling.

Getting started

Install

Add custom middleware

Add the custom middleware as a devDependency to your project.

With yarn:

yarn add -D ui5-middleware-http-proxy

Or npm:

npm i -D ui5-middleware-http-proxy

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

{
  "ui5": {
    "dependencies": [
      "ui5-middleware-http-proxy"
    ]
  }
}

Register

Register custom middleware

Register the custom middleware in your project's ui5.yaml:

server:
  customMiddleware:
    # proxy for ui5 resources
    - name: ui5-middleware-http-proxy
      mountPath: /resources
      afterMiddleware: compression
      configuration:
        baseUrl: https://openui5.hana.ondemand.com
        path: /resources
    # proxy for ui5 test resources
    - name: ui5-middleware-http-proxy
      mountPath: /test-resources
      afterMiddleware: compression
      configuration:
        baseUrl: http://localhost:5000
        path: /test-resources
    # proxy for service with self signed certificate and http basic authentication
    - name: ui5-middleware-http-proxy
      mountPath: /service
      afterMiddleware: compression
      configuration:
        debug: true
        baseUrl: https://services.odata.org
        path: /V2/Northwind/Northwind.svc
        secure: false
        auth:
          user: kratos
          pass: atreus

Additional configuration

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:5000
path string path for proxying 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 - kratos, env:HTTP_PROXY_AUTH_USER
auth.pass string password for http basic authentication no - atreus, env:HTTP_PROXY_AUTH_PASS

Support for .env files

Support for .env files is provided by the dotenv module.

Simply prefix your .env variables for with env: and provide them as auth.user and auth.pass in your configuration.

Instead of taking the plain string value, the variable will then be resolved against your .env file.

Example configuration file:

server:
  customMiddleware:
    # proxy using .env credentials
    - name: ui5-middleware-http-proxy
      mountPath: /service
      afterMiddleware: compression
      configuration:
        debug: true
        baseUrl: https://services.odata.org
        path: /V2/Northwind/Northwind.svc
        secure: false
        auth:
          user: env:MY_HTTP_PROXY_AUTH_USER
          pass: env:MY_HTTP_PROXY_AUTH_PASS

Example .env file:

MY_HTTP_PROXY_AUTH_USER=kratos
MY_HTTP_PROXY_AUTH_PASS=atreus
NOTE:

This is a breaking API change as of version ^2.0.0.

Version ^1.1.0 only supports static .env variables:

  • HTTP_PROXY_AUTH_USER
  • HTTP_PROXY_AUTH_PASS

Example app

Please have look at bookshop-ui.

About

custom ui5 middleware extension for proxying http requests

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published