Skip to content

How to Use an HTTP Endpoint

Note

Starting from WSO2 MI 4.4.0, a new HTTP Connector is available for invoking HTTP backends. While HTTP endpoints can still be used, the HTTP connector provides a more flexible and feature-rich approach for handling HTTP requests. It is recommended to use the HTTP Connector for new implementations.

See the examples given below on how to effectively use the HTTP endpoint.

Example 1: Populate an HTTP endpoint during mediation

Shown below is a synapse configuration that defines an endpoint artifact.

<endpoint name="HTTPEndpoint" xmlns="http://ws.apache.org/ns/synapse">
    <http method="get" uri-template="http://localhost:8080/{uri.var.servicepath}/restapi/{uri.var.servicename}/menu?category={uri.var.category}&amp;type={uri.var.pizzaType}"/>
</endpoint>

The URI template variables in this example HTTP endpoint can be populated during mediation using the following sequence configuration:

 <inSequence>
    <property name="uri.var.servicepath" scope="default" type="STRING" value="PizzaShopServlet"/>
    <property name="uri.var.servicename" scope="default" type="STRING" value="PizzaWS"/>
    <property name="uri.var.category" scope="default" type="STRING" value="pizza"/>
    <property name="uri.var.pizzaType" scope="default" type="STRING" value="pan"/>
    <send>
        <endpoint key="HTTPEndpoint"/>
    </send>
 </inSequence>

This configuration will cause the RESTful URL to evaluate the following:

http://localhost:8080/PizzaShopServlet/restapi/PizzaWS/menu?category=pizza&type=pan

Example 2

You can specify one parameter as the HTTP endpoint by using multiple other parameters, and then pass that to define the HTTP endpoint as follows:

<property name="uri.var.httpendpointurl" expression="fn:concat($ctx:prefixuri, $ctx:host, $ctx:port, $ctx:urlparam1, $ctx:urlparam2)" />
<send>
    <endpoint>
        <http uri-template="{uri.var.httpendpointurl}"/>
    </endpoint>
</send>