Skip to content

Martini Proxy Request Functions

The ProxyRequest class in Martini facilitates proxying HTTP requests to different servers. This functionality is crucial for various applications, such as integrating with legacy systems, managing load balancing, or redirecting requests.

Implementing ProxyRequest Functions

Accessing Functions

To access ProxyRequest functions:

  1. Navigate to the Functions node in your Martini navigator.
  2. Locate the ProxyRequest folder, which contains all available functions for handling proxy requests.

Incorporating Functions into Services

ProxyRequest functions can be added to your services in two primary ways:

  1. Drag and Drop: Select and drag the desired function from the ProxyRequest folder directly into your service.
  2. Content Assist: Activate content assist by pressing the . (period) key and start typing the function name. Functions associated with proxy requests typically begin with "proxy request."

Groovy Example

Below is an example of implementing a proxy request function in Groovy:

1
2
3
4
@RequestMapping('/exampleEndpoint/**') 
void proxyExampleApi(HttpServletRequest request, HttpServletResponse response) {
    request.proxy(response, 'http://www.example.api/target/path')
}

In this example, requests to /exampleEndpoint/** are proxied to http://www.example.api/target/path.

Service Configuration for Proxy Requests

When setting up a service for proxy requests, ensure the following:

  • Request and Response Objects: Declare objects with the class names HttpServletRequest and HttpServletResponse for handling the request and response, respectively.
  • Function Invocation: Use the proxy function to forward the incoming request to the target URL. The response from the target URL is then written back to the response object in your service.

Handling Errors and Responses

  • The response body is automatically closed if the proxy request successfully receives a response from the target URL.
  • In case of exceptions (e.g., target URL is down or the remote server times out), the response body is kept open, allowing the original caller to manage the error.