In this blog post, I describe how, during the development of an Oracle SOA Suite 12c composite, to pass URL parameters when invoking an external REST service.

In this example, my SOA composite has 2 separate external references. These are both REST services using the GET method. The first one take the format of https://revelationtech.com/rest/v2/subscribers?q=firstname wherein an explicit query parameter q is passed in the URL with some value after it. The second reference takes the format of https://revelationtech.com/rest/v2/subscribers/Ahmed, wherein Ahmed is a parameterized part of the URL.

Passing a Query Parameter to the REST URI

For the first reference, when creating the REST adapter, it looks like the following:

When editing the method, it is configured as a GET method and the URI parameter is defined with a runtime property rest.query.q:

Now that the REST adapter is created, double-click on the Invoke activity in your BPEL process, navigate to the Properties tab, and manually add a property as shown. Here, the BPEL variable $inputName becomes the value that is passed to the rest.query.q property:

Adding a Parameterized Context Path to the REST URI

As for the the second reference, you can see here when creating the REST adapter, the {inputID} is explicitly defined as a variable in the resource path:

Now when you edit the method, it is also a GET method, but the runtime property here is now rest.template.inputID:

Similarly, when editing the Invoke activity in your BPEL process, simply add a property to map your BPEL variable (e.g., $input) to the runtime property (e.g., rest.template.inputID):