WSO2 API Manager
comes with API prototyping capability OOTB. However if you are in
need of advance prototyping capabilities or feel restricted by the
available implementation for the time being you could tap into the
underlying mediation engine (WSO2 ESB) to meet your prototyping need.
1) Create a mediation policy with the prototype logic
The mediation policy
should be such that it respond back to the client with configured
response rather than passing the message back to the backend. We can
achieve this requirement using Respond[1] and Payload Factory
mediators[2].
<sequence xmlns="http://ws.apache.org/ns/synapse" name="prototypesequence">
<header name="To" action="remove"></header>
<header name="CustomHeader" scope="transport" value="test123"></header>
<property name="RESPONSE" value="true"></property>
<property name="NO_ENTITY_BODY" action="remove" scope="axis2"></property>
<payloadFactory media-type="json">
<format> {"id":"101","name": "dumiduh","desc": "hard coded json"} </format>
</payloadFactory>
<class name="org.wso2.carbon.apimgt.usage.publisher.APIMgtResponseHandler"/>
<respond></respond>
</sequence>
<header name="To" action="remove"></header>
<header name="CustomHeader" scope="transport" value="test123"></header>
<property name="RESPONSE" value="true"></property>
<property name="NO_ENTITY_BODY" action="remove" scope="axis2"></property>
<payloadFactory media-type="json">
<format> {"id":"101","name": "dumiduh","desc": "hard coded json"} </format>
</payloadFactory>
<class name="org.wso2.carbon.apimgt.usage.publisher.APIMgtResponseHandler"/>
<respond></respond>
</sequence>
The example above is
using a hard coded response body and headers, you could also populate
the response with variables as required[3]. Find the example mediation policy here [4]
2) Attach mediation policy to API in flow
Start creating an API with required HTTP methods etc, select Manage API from implementation and from Message Mediation Policies section upload the prototype mediation policy. Publish the API.
3) Invoke
[1] - https://docs.wso2.com/display/ESB490/Respond+Mediator
[2] - https://docs.wso2.com/display/ESB490/PayloadFactory+Mediator
[3] - https://docs.wso2.com/display/ESB490/PayloadFactory+Mediator#PayloadFactoryMediator-Example3:Addingarguments
[4] - https://drive.google.com/file/d/0B9oVIeyHJKBXb0xkTGUwSmlJc0E/view?usp=sharing
No comments:
Post a Comment