This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.
Message Mediation for WSO2 API Cloud
An API hosted in the WSO2 API Cloud receives requests sent from your consumer applications to your backend, and then sends the responses from the backend to you. The default flow of events of an API hosted in the WSO2 API Cloud is shown in the diagram below.
If you need to modify or transform the requests and responses of your API, you need to engage a message mediation that intercepts the default flow. The API Gateway has a default mediation flow, which you can extend using mediation policies. You can create a custom mediation policy manually, or using a tool, and then engage it with the API. This will enable you to modify the default mediation flow for different use cases according to your requirement.
Let's look at a scenario, where custom mediation policies can be applied.
In this example, your consumer application sends and receives messages in JSON format and the backend service uses XML. Therefore, your consumer application sends the request payload using JSON. However, your backend service expects the request payload to be in XML format. Similarly, your consumer application expects a JSON response from your API, but the backend service is only capable of sending the responses in XML format. You have to convert the JSON messages sent from the application to the backend service into an XML and also convert the XML messages sent back from the backend service as the response to the consumer application into JSON format. WSO2 API Cloud allows you to add mediation policies that convert the messages to the correct format, as shown in the diagram below.
You can add a mediation sequence to the In Flow, which converts the JSON request from the application and sends it in XML format to the backend service. You will also need to convert the XML responses from the backend service, to JSON which can be detected by your application. To convert the responses from XML to JSON, you can add another mediation sequence to the Out Flow.
WSO2 API Cloud offers a wide variety of custom sequences out-of-the-box, which can be applied according to your requirements. Following are some of the custom message mediation examples:
If you are using a respond mediator in a custom sequence and you want to enable /wiki/spaces/APICLOUDTEST/pages/43746096 to publish the statistics, you need to include the APIMgtResponseHandler
class before the respond mediator in a manner similar to the following:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="admin--Test:v1.0.0--In"> <call blocking="true"> <endpoint> <http method="GET" uri-template="http://abc.com"> <timeout> <duration>120000</duration> <responseAction>fault</responseAction> </timeout> </http> </endpoint> </call> <property name="ENDPOINT_ADDRESS" value="http://abc.com"/> <class name="org.wso2.carbon.apimgt.gateway.handlers.analytics.APIMgtResponseHandler"/> <respond/> </sequence>
When you include the APIMgtResponseHandler
class, make sure that you add the ENDPOINT_ADDRESS
property to populate the destination address for statistics (API Usage by Destination).
<property name="ENDPOINT_ADDRESS" value="http://abc.com"/>
For more information on the possibilities of using custom sequences, see Sample Mediation Sequences. If you have a custom requirement, contact us via support or simply email to cloud@wso2.com with your use case.