Presentation is loading. Please wait.

Presentation is loading. Please wait.

REST in Peace with Web services Eran Chinthaka Samisa Abeysinghe WSO2 Inc.

Similar presentations


Presentation on theme: "REST in Peace with Web services Eran Chinthaka Samisa Abeysinghe WSO2 Inc."— Presentation transcript:

1 REST in Peace with Web services Eran Chinthaka (chinthaka@apache.org) Samisa Abeysinghe (samisa@apache.org) WSO2 Inc.

2 Who We Are Eran Chinthaka Member – Apache Software Foundation Lead Developer – Apache Axiom, Axis2, Synapse, Tungsten W3C WS-Addressing working group member Senior Software Engineer- WSO2 Inc. Samisa Abeysinghe Member – Apache Software Foundation Lead Developer Apache Axis2/C and Axis C++ Software Architect – WSO2 Inc.

3 Agenda What is REST and Web services? SOAP vs. REST How WSDL 2.0 enables REST? How can it be implemented? – Axis2 Architecture Getting your feet wet with 'code'

4 4 What is REST...? REpresentational State Transfer Representational State Transfer is intended to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state- machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rendered for their use. - Roy T. Fielding Architectural Style of network systems

5 5 Why is it called REST ? Web comprised of resources Accessing http://www.wso2.net/products/tungsten http://www.wso2.net/products/tungsten Representation of the resource is accessed Places client application in a state Client application changes (transfers)

6 6 REST, a standard? An architectural style Not a standard But uses standards http url xml/html/gif/jpeg, etc – media types text/xml, text/html, etc – MIME types

7 7 SOAP SOAP is a messaging protocol has three parts Body is for payload Header is for QoS Addressing, Security, RM

8 8 REST vs. SOAP REST – Fixed interface URI for GET case XML for POST case – Mostly HTTP Transport – Lighter bandwidth – QoS support – based on transport – Suited for lightweight scenarios SOAP – Flexible interface POST with SOAP envelope – Transport agnostic – Comparatively higher bandwidth – Wide array of message level QoS options – WS-* – Suited for heavyweight scenarios

9 9 REST? Our objectives Support plain old XML interaction with services over POST Support HTTP GET bindings for services Non-objectives: Support all of REST

10 10 How WSDL 2.0 Enabled the REST + WS Marriage WSDL 2.0 HTTP binding enables services to be used with GET and POST Specify how to take (certain styles of) an XML Schema and formulate a GET/POST request out of it

11 11 WSDL 2.0 Rules for HTTP Binding binding type should behttp://www.w3.org/2006/01/wsdl/http http://www.w3.org/2006/01/wsdl/http Formulating a HTTP message, contents of payload defined in MessageReference or InterfaceFault Schema should adhere to IRI style

12 12 IRI Style An element style defined on the schema of the payload Rules : The content model of this element is defined using a complex type that contains a sequence from XML Schema. The sequence MUST only contain elements. It MUST NOT contain other structures such as xs:choice. The sequence MUST contain only local element children. These child elements MAY contain the nillable attribute. The localPart of the element's QName MUST be the same as the Interface Operation component's {name}.

13 13 IRI Style Rules : The complex type that defines the body of the element or its children elements MUST NOT contain any attributes. If the children elements of the sequence are defined using an XML Schema type, they MUST derive from xs:simpleType, and MUST NOT be of the type or derive from xs:QName, xs:NOTATION, xs:hexBinary or xs:base64Binary.

14 14 Input and Output Serialization Formats Default :

15 15 Input and Output Serialization Formats

16 16 Input and Output Serialization Formats Allowed Formats : source :

17 17 Operation Styles Required source :

18 18 Implementing in Apache Axis2 Apache Axis2/Java Apache Axis2/C Understand REST implementation --> Understand Axis2 Architecture....

19 19 Axis2 – Messaging Engine Piped view

20 20 Axis2 – The Big Picture Applicatio n Trans port Phas e Z Phas e Y Phas e X XML Message Engine Message Receiver Message Context

21 21 Axis2 – Inside Message Context MessageContext Property Bag someObjectproperty2 Boolean.TRUEproperty1 Execution Chain... Message Pointers to OperationContext, ServiceContext, ConfigurationContext Other fields Handlers

22 22 Axis2 - Dispatching Finding the correct service and operation a message is destined to. Dispatchers RequestURIBasedDispatcher AddressingBasedDispatcher SOAPActionBasedDispatcher SOAPMessageBodyBasedDispatcher

23 23 Axis2 – Content Type Handling Builders for different content types StAXOMBuilder StAXSOAPModelBuilder MTOMSOAPBuilder

24 24 Marrying REST with Axis2 – Receiving REST Requests Axis2 engine needs SOAPEnvelope to process a message. On receiving the message --> dispatch Get schema and check the message, construct SOAPBody in accordance with the schema Create SOAPEnvelope and pass it to the engine

25 25 Marrying REST with Axis2 – Receiving REST Requests Engine doesn't know about REST, except a flag Works with GET and POST with any content type

26 26 Marrying REST with Axis2 – Sending REST Requests Client API is the same for SOAP and REST requests, except a flag to notify its REST HTTP method (optional) content type (optional) TransportSender serializes the proper way

27 27 Getting Your Feet Wet... Sending a SOAP Request... Sending REST Request (minimal config) Options options = new Options(); options.setTo(new EndpointReference(toEpr)); ServiceClient sender = new ServiceClient(); sender.setOptions(options); OMElement result = sender.sendReceive(getPayload()); Options options = new Options(); options.setTo(new EndpointReference(toEpr)); options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE); ServiceClient sender = new ServiceClient(); sender.setOptions(options); OMElement result = sender.sendReceive(getPayload());

28 28 More Control Sending REST Request (optional configuration) Setting content type Available content types MEDIA_TYPE_X_WWW_FORM - application/x-www- form-urlencoded MEDIA_TYPE_TEXT_XML - text/xml MEDIA_TYPE_MULTIPART_RELATED - multipart/related MEDIA_TYPE_APPLICATION_XML - application/xml options.setProperty(Constants.Configuration.CONTENT_TYPE, contentType);

29 29 More Control.... Sending REST Request (optional configuration) Setting HTTP Method Available Web Methods HTTP_METHOD_GET HTTP_METHOD_POST (Default) options.setProperty(Constants.Configuration.HTTP_METHOD, webMethod);

30 30 REST Configuration in Axis2 – Server Side Any service that abides with WSDL 2.0 HTTP Binding is REST enabled.

31 31 I'm a C fan, Can I also REST ? YES !!!

32 32 Getting Your Feet Wet (again) with C Sending a SOAP Request... endpoint_ref = axis2_endpoint_ref_create(env, address); options = axis2_options_create(env); AXIS2_OPTIONS_SET_TO(options, env, endpoint_ref); svc_client = axis2_svc_client_create(env, client_home); AXIS2_SVC_CLIENT_SET_OPTIONS(svc_client, env, options); ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE(svc_client, env, get_payload(env));

33 33 Getting Your Feet Wet (again) with C... Enabling REST at the client side AXIS2_OPTIONS_SET_PROPERTY(options, env, AXIS2_ENABLE_REST, AXIS2_VALUE_TRUE);

34 34 Getting Your Feet Wet... Sending REST Request... endpoint_ref = axis2_endpoint_ref_create(env, address); options = axis2_options_create(env); AXIS2_OPTIONS_SET_TO(options, env, endpoint_ref); AXIS2_OPTIONS_SET_PROPERTY(options, env, AXIS2_ENABLE_REST, AXIS2_VALUE_TRUE); svc_client = axis2_svc_client_create(env, client_home); AXIS2_SVC_CLIENT_SET_OPTIONS(svc_client, env, options); ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE(svc_client, env, get_payload(env));

35 35 More Control AXIS2_OPTIONS_SET_PROPERTY(options, env, AXIS2_CONTENT_TYPE, content_type); AXIS2_OPTIONS_SET_PROPERTY(options, env, AXIS2_HTTP_METHOD, web_method);

36 36 Summary What is REST and Web services ? SOAP vs. REST How WSDL 2.0 enables REST How can it be implemented – Axis2 Architecture Getting your feet wet with code

37 37 Questions... ? Download presentation from http://people.apache.org/~chinthaka/presentations/ ApacheConEU2006/RESTInPeaceWithWS.ppt

38 38 Thank You.


Download ppt "REST in Peace with Web services Eran Chinthaka Samisa Abeysinghe WSO2 Inc."

Similar presentations


Ads by Google