Running the REST API Samples with WSO2 Enterprise Service Bus (ESB)

Sample 800: Introduction to REST API

<!-- An empty flat synapse configuration shipped with the WSO2 ESB -->
<definitions xmlns="http://ws.apache.org/ns/synapse">

    <!-- You can add any flat sequences, endpoints, etc.. to this synapse.xml file if you do
    *not* want to keep the artifacts in several files -->
<api name="StockQuoteAPI" context="/stockquote">
   <resource uri-template="/view/{symbol}" methods="GET">
      <inSequence>
         <payloadFactory>
	    <format>
		<m0:getQuote xmlns:m0="http://services.samples">
	            <m0:request>
        	       <m0:symbol>$1</m0:symbol>
	            </m0:request>
        	 </m0:getQuote>
	    </format>
	    <args>
		<arg expression="get-property('uri.var.symbol')"/>
	    </args>
	 </payloadFactory>
	 <send>
	    <endpoint>
		<address uri="http://localhost:9000/services/SimpleStockQuoteService" format="soap11"/>
	    </endpoint>
	 </send>
      </inSequence>
      <outSequence>
	 <send/>
      </outSequence>
   </resource>
   <resource url-pattern="/order/*" methods="POST">
      <inSequence>
        <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
	<property name="OUT_ONLY" value="true"/>
	<send>
            <endpoint>
                <address uri="http://localhost:9000/services/SimpleStockQuoteService" format="soap11"/>
            </endpoint>
         </send>
      </inSequence>      
   </resource>
</api>
</definitions>

Objective: Introduction to REST API

Prerequisites:
Start the Axis2 server and deploy the SimpleStockQuoteService
Start the Synapse configuration numbered 800: i.e. wso2esb-samples -sn 800
You might need a REST client like curl to test this

curl -v http://127.0.0.1:8280/stockquote/view/IBM
curl -v http://127.0.0.1:8280/stockquote/view/MSFT

The above GET calls will be handled by the first resource in the StockQuoteAPI. These REST calls will get converted into SOAP calls and will be sent to the Axis2 server. Response will be sent to the client in POX format.

The following command POSTs a simple XML to the ESB. Save following sample place order request as "placeorder.xml" file in your local file system and execute the command. That is used to invoke a SOAP service. ESB returns the 202 response back to the client.

curl -v -d @placeorder.xml -H "Content-type: application/xml" http://127.0.0.1:8280/stockquote/order/
<placeOrder xmlns="http://services.samples">
  <order>
     <price>50</price>
     <quantity>10</quantity>
     <symbol>IBM</symbol>
  </order>
</placeOrder>