Hi,

I've worked on the HTTP Endpoint UI component - and have uploaded a patch
which can be found on https://wso2.org/jira/browse/ESBJAVA-1786.



Thanks,
Ravi

On Fri, Jan 4, 2013 at 3:38 PM, Kasun Indrasiri <[email protected]> wrote:

> Hi,
>
> - The first cut of the HTTP Endpoints for outbound REST integration (I
> have attached the diff and required esb config). Basically, this feature
> allows us to create a new endpoint type 'http' to facilitate outbound REST
> calls. The outbound uri is dynamically generated with the use of URI
> Templates and required http method can be selected.
>
> - Since the WSO2 URI-template doesn't support expanding, *
> https://github.com/damnhandy/Handy-URI-Templates* was used.
> - Also, this endpoint type allows us to dynamically construct the endpoint
> uri for SOAP services as well (i.e by method set to POST).
>
> *Sample Scenario:*
>
> The scenario is to send a outbound http call to an external RESTful
> service.
> SOAP () - > REST ()
>
> *GET*
>
> http://localhost:8080/PizzaShopServlet/restapi/PizzaWS/menu?category=pizza&type=pan
>
> *POST*
> http://localhost:8080/PizzaShopServlet/restapi/PizzaWS
>
> So we can have endpoint uri template as follows :
> *http://localhost:8080/{uri.var.servicepath}/restapi/{uri.var.servicename
> }/menu?category={uri.var.}&amp;type={uri.var.pizzaType}*
>
> eg:
> <endpoint xmlns="http://ws.apache.org/ns/synapse"; name="TestEP">
>  <http uri-template="
> http://localhost:8080/{uri.var.servicepath}/restapi/{uri.var.servicename}/menu?category={uri.var.category}&amp;type={uri.var.pizzaType}<http://localhost:8080/%7Buri.var.servicepath%7D/restapi/%7Buri.var.servicename%7D/menu?category=%7Buri.var.category%7D&type=%7Buri.var.pizzaType%7D>
> "
>           method="GET"></http>
> </endpoint>
>
> The properties defined in the inSeq will get dynamically expanded during
> the outbound call.
>  <inSequence>
>             <property name="uri.var.servicepath" value="PizzaShopServlet"/>
>             <property name="uri.var.servicename" value="PizzaWS"/>
>             <property name="uri.var.category" value="pizza"/>
>             <property name="uri.var.pizzaType" value="pan"/>
>             <send>
>                 <endpoint key="TestEP"/>
>             </send>
> </inSequence>
>
>
>
> Remaining stuff :
> - Payload Factory for other formats
> - HTTP Header mediator
> - HTTP EP UI
>
>
>
>
> ---------- Forwarded message ----------
> From: Kasun Indrasiri <[email protected]>
> Date: Thu, Nov 8, 2012 at 11:28 AM
> Subject: [Architecture]Outbound HTTP Calls in the ESB
> To: architecture <[email protected]>
>
>
> We had a discussion on the $subject.
>
> *Attendees: Kasun, Miyuru, Paul, Sanjiva, Shankar.
> Date: Wed Nov 7 2012
>
> <endpoint name=”...”>
>
> <!-- template below can refer to any Synapse property - evaluation is
> deferred until runtime -->
>
> <http uri-template=”http[s]://host:port/{x}/{foo}/{extra-stuff}”
> [method=”string or {property}”]
>
>                        [statistics="enable|disable"]
> [trace="enable|disable"]>
>
>    <header name=”..” (value=”string or {property}” |
> expression=”xpath-expression”)/>*
>
>    <timeout>
>        <duration>timeout duration in milliseconds</duration>
>        <action>discard|fault</action>
>    </timeout>?
>
>    <markForSuspension>
>        [<errorCodes>xxx,yyy</errorCodes>]
>        <retriesBeforeSuspension>m</retriesBeforeSuspension>
>        <retryDelay>d</retryDelay>
>    </markForSuspension>
>
>    <suspendOnFailure>
>        [<errorCodes>xxx,yyy</errorCodes>]
>        <initialDuration>n</initialDuration>
>        <progressionFactor>r</progressionFactor>
>        <maximumDuration>l</maximumDuration>
>    </suspendOnFailure>
> </http>
> </endpoint>
>
> <api ..>
> <resource template=/uri/{user}..>
>    <payload-factory [media-type=”application/json”]>
>         ONE OF:
>       <json>{“a” : {{uri.var.user}}, “b” : “$1”}</json>
>        <text>Hello there Mr. $1</text>
>       <xhtml><![CDATA …]></xhtml>
>         <resource (source=”uri” | key=”reg-key”)/>
>        <formatxml>
>            <a>$1</a>
>           <b>$2</b>
>         </formatxml>
>         <class name=”FQDN”/>
>
>         [<arg value/expressionxpath/jsonproperty=”$ctx:uri.var.user”/>*]
>
>  </payload-factory>
>     <http-header name=”string or {property}”
>                          (value=”string or {property}” |
> expression=”xpath-expression”)
>                         [action=”add|remove”]/>
>     <send endpoint=”http-endpoint-x”/>
>  </resource>
> </api>
>
> ACTIONS:
>
>    - Create new http-endpoint endpoint
>    - Create new mediator http-header
>    - Improve <payoad-factory> to be more generic as above
>    - Samples!
>
>
>
> Check out https://github.com/damnhandy/Handy-URI-Templates as possible
> tool to create URIs with URI templates. (Our one is for parsing URIs using
> templates.)
>
> Samples:
>
> HTTP GET to POST
> Simple transform of XML to JSON using a Payload factory
> SOAP to REST example
> JSON to XML
>  *
>
> --
> Kasun Indrasiri
> Associate Technical Lead
> WSO2, Inc.; http://wso2.com
> lean.enterprise.middleware
>
> cell: +94 71 536 4128
> Blog : http://kasunpanorama.blogspot.com/
>
>
>
> --
> Kasun Indrasiri
> Associate Technical Lead
> WSO2, Inc.; http://wso2.com
> lean.enterprise.middleware
>
> cell: +94 71 536 4128
> Blog : http://kasunpanorama.blogspot.com/
> _______________________________________________
> Dev mailing list
> [email protected]
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to