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'sui5.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