The API Gateway has a default mediation flow for the API invocation requests that it receives. You can extend this default mediation flow to do additional custom mediation for the messages in the API Gateway. An extension is provided as a
synapse mediation sequence. You design all sequences using a tool such as the
WSO2 API Manager Tooling Plug-in and then store the sequence in the Gateway's registry.
Let's see how to create a custom sequence using the WSO2 API Manager Tooling Plug-in and then deploy and use it in your APIs.
Log in to the API Publisher.
Click Add to create an API with the following information and then click Next: Implement >.
The Implement
tab opens. Select Managed API, provide the information given in the table below and click Manage.
Endpoint type | HTTP/REST endpoint |
Production endpoint |
To verify the URL, click the Test button next to it.
|
Sandbox endpoint | https://query.yahooapis.com/v1/public/yql To verify the URL, click the Test button next to it. |
Click Next: Manage > to go to the Manage
tab, provide the following information and click Save & Publish once you are done.
Download and install the
WSO2 API Manager Tooling Plug-in if you have not done so already.
Open Eclipse by double clicking the Eclipse.app
file inside the downloaded folder.
- Click Window > Open Perspective > Other to open the Eclipse perspective selection window. Alternatively, click the Open Perspective icon shown below at the top right corner.
- On the dialog box that appears, click WSO2 APIManager and click OK.
- On the APIM perspective, click the Login icon as shown below.
- On the dialog box that appears, enter the URL, usernameand password of the Publisher server.
- On the tree view that appears, expand the folder structure of the existing API.
Right-click on the
in
sequence folder and click
Create to create a new
in
sequence.
This is because you want the custom sequence to be invoked in the
In
direction or the request path. If you want it to be involved in the
Out
or
Fault
paths, select the respective folder under
customsequences
.
- Name the sequence
YahooWeatherSequence
.
Your sequence now appears on the Developer Studio console. From under the
Mediators section, drag and drop a
Property mediator to your sequence and give the following values to the property mediator.
Property Name | New Property |
New Property Name | YQL |
Value Type | Expression |
Value Expression |
For the XPath expression, we take a part of the query in the Yahoo API's endpoint ( https://developer.yahoo.com/weather/) and concatenate the zip code and country to it using the synapse get-property XPath expression:
concat( '?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22' ,syn:get-property( 'uri.var.zipcode' ), ',' ,syn:get-property( 'uri.var.country' ), '%22)&format=json' )
|
|
Property Scope |
|
Similarly, add another property mediator with the following values. This is an HTTP transport property that appends its value to the address endpoint URL. Once you are done, save the sequence.
Property Name | New Property |
New Property Name | REST_URL_POSTFIX |
Value Type | Expression |
Value Expression | get-property('YQL') |
Property Scope |
|
- Save the sequence.
- Right-click on the sequence and click Commit File to push the changes to the Publisher server.
- Log back in tothe API Publisher, select the API that you created earlier and click the Edit link right next to its name to go to the edit wizard.
Navigate to the API's Implement tab, select the Enable Message Mediation check box and select the sequence that you created for the In flow. Next, click Manage and Save & Publish the API again.
- Open the API Store, subscribe to the API that you just published and generate the access tokens in order to invoke the API.
- Click the API Console tab of the API. It opens the integrated API Console using which you can invoke the API.
Give the following values for the parameters and invoke the API. You can also give any other value of your choice.
- Note the response that you get as a JSON object from Yahoo.
In this tutorial, you created a sequence to change the default mediation flow of API requests, deployed it in the API Gateway and invoked an API using the custom mediation flow.