REST Proxy module

Developer productivity Unbundled: Framework

Edition

Incubator (services)

Git

Git

Latest

1.0

Compatible with Magnolia 6.2+.

The REST Proxy module is used to proxy REST calls to another API via Magnolia. This way passwords and security critical information can be hidden from the browser.

This module is at the INCUBATOR level.

Installing with Maven

Maven is the easiest way to install the module. Add the following to your bundle:

<dependency>
  <groupId>info.magnolia.restproxy</groupId>
  <artifactId>magnolia-rest-proxy</artifactId>
  <version>1.0</version>
</dependency>

Configuration

The configuration consists of two parts. A REST endpoint that is exposed by Magnolia and a REST client that requests to the endpoint are proxied to.

REST endpoint

<light-module-name>/restEndpoints/<restEndpointName>.yaml
class: info.magnolia.restproxy.service.ConfiguredRestProxyEndpointDefinition
restClientName: <REST_CLIENT_NAME> (1)
restCallName: <REST_CLIENT_METHOD_NAME> (2)
1 Replace with the actual REST client name.
2 Method name such as GET, PUT, POST.

REST client

Below is an example for the REST client.

  • The method configured in the client can use get or post but the endpoint exposed by Magnolia must be called via post.

  • The endpoint can only proxy requests to one method. To expose multiple methods from the same API, configure multiple endpoints.

See the The endpointPath property to see how how endpoints configured in the same light module directory are exposed under a common path segment.

<light-module-name>/restClients/<restClientName>.yaml
baseUrl: <URL to the existing service> (1)
securitySchemes:
  b1:
    $type: basic
    username: <username for the existing service>
    password: <password for the existing service>
restCalls:
  <REST_CLIENT_METHOD_NAME>: (2)
    method: get
    path: /<path of the method>/${idProperty}
    securityScheme: b1
1 Be sure to add your value to baseUrl.
2 Be sure to add your method here.

Example call from Frontend

await fetch('/.rest/<REST_CLIENT_NAME>', { (1)
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: `{"idProperty":"${idProperty}"}`
});
1 Be sure to put your own REST_CLIENT_NAME.

Changelog

Version Notes

1.0

Initial release of the module.

Feedback

Incubators

×

Location

This widget lets you know where you are on the docs site.

You are currently perusing through the REST Proxy module docs.

Main doc sections

DX Core Headless PaaS Legacy Cloud Incubator modules