1 / 16

RESTful Service Discussions

RESTful Service Discussions. Shawn Hu. Design Artifact Considerations. XML schemas for message payload definition WSDL 2.0 for service definition in REST style Operation style & pattern style="http://www.w3.org/ns/wsdl/style/iri" pattern="http://www.w3.org/ns/wsdl/in-out" Binding type:

annwalsh
Download Presentation

RESTful Service Discussions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. RESTful Service Discussions Shawn Hu

  2. Design Artifact Considerations • XML schemas for message payload definition • WSDL 2.0 for service definition in REST style • Operation style & pattern • style="http://www.w3.org/ns/wsdl/style/iri" pattern="http://www.w3.org/ns/wsdl/in-out" • Binding type: • type="http://www.w3.org/ns/wsdl/http" • Operation method (http verbs) • whttp:method="GET" (or others)

  3. Consumption XML Schema • Consumption.xsd

  4. RESTful Service Definition • Input • Using HTTP GET or POST following URL naming convention • Output • Using XSD for return

  5. Xpath for URI Design http://www.openade.org/datastore/Consumption/MeterReading/IntervalBlocks/IntervalReadings/value

  6. URI Naming Convention • URI = <Base Resource Address>+<Resource Path>+<Request> • <Base Resource Address> - A base address where a web service is located such as http://www.openade.org/datastore/ (not real address but for example only) • <Resource Path> - A path to access resource component. This path follows XSD Xpath convention such as /Consumption/MeterReading/IntervalBlocks/IntervalReadings/ to access interval readings as consumption • <Request> - An optional field for arguments such as ?timeStamp=2010-02-02T00:00:00Z • Example URI for a resource: http://www.openade.org/datastore/Consumption/MeterReading/IntervalBlocks/IntervalReadings?timeStamp=2010-02-02T00:00:00Z

  7. Service Table

  8. GET URI & Return XML • Entry URI: http://www.OpenSG.org/datastore/Consumption/MeterReading/IntervalBlocks/IntervalReadings/value?timeStamp=2009-12-17T09:30:47Z Note: <Resource Path> may need to truncated to only list <Immediate Parent><Child> such as http://www.OpenSG.org/datastore/IntervalReadings/value?timeStamp=2009-12-17T09:30:47Z • Return XML: <?xml version="1.0" encoding="UTF-8"?> <m:Consumption> <m:MeterReading> <m:IntervalBlocks> <m:IntervalReadings> <m:timeStamp>2009-12-17T09:30:47Z</m:timeStamp> <m:value>12.35</m:value> </m:IntervalReadings> </m:IntervalBlocks> </m:MeterReading> </m:Consumption>

  9. POST Entry URI & XML • Entry URI: http://www.OpenSG.org/datastore/Consumption/MeterReading/IntervalBlocks/IntervalReadings/value • Resulting XML to post: <?xml version="1.0" encoding="UTF-8"?> <m:Consumption> <m:MeterReading> <m:CustomerAgreement> <m:mRID>12345</m:mRID> </m:CustomerAgreement> <m:IntervalBlocks> <m:IntervalReadings> <m:timeStamp>2009-12-17T09:30:47Z</m:timeStamp> <m:value>12.35</m:value> </m:IntervalReadings> </m:IntervalBlocks> </m:MeterReading> </m:Consumption>

  10. Compressed/Truncated XML • XML can be compressed or truncated as below if space is limited using the POST XML as an example: <C><MR><CA><ID>12345</ID></CA><IB><IR><tS>2009-12-17T09:30:47Z</tS><v>12.35</v></IR></IB></MR></C>

  11. WSDL Design • Operation Style & Pattern • style=http://www.w3.org/ns/wsdl/style/iri (W3C WSDL2.0) • 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. There are no occurrence constraints on the sequence. • The sequence MUST contain only local element children.† Note these child elements can contain the nillable attribute. • The localPart of the element's QName MUST be the same as the Interface Operation component's {name}.† • The complex type that defines the body of the element or its children elements MUST NOT contain any attributes.† • The children elements of the sequence MUST derive from xs:simpleType, and MUST NOT be of the type or derive from xs:QName, xs:NOTATION, xs:hexBinary or xs:base64Binary.† Note: IRIs – Internationalized Resource Identifiers (IETF)

  12. WSDL Design • Operation Style & Pattern • pattern=http://www.w3.org/ns/wsdl/in-out (W3C WSDL2.0) • The in-out message exchange pattern consists of exactly two messages, in order, as follows:† • A message: • indicated by a Interface Message Reference component whose {message label} is "In" and {direction} is "in" • received from some node N • A message: • indicated by a Interface Message Reference component whose {message label} is "Out" and {direction} is "out" • sent to node N • The in-out message exchange pattern uses the rule 2.2.1 Fault Replaces Message propagation rule.† • An operation using this message exchange pattern has a {message exchange pattern} property with the value "http://www.w3.org/ns/wsdl/in-out".

  13. Service Output • In-Out Pattern for a GET return (message)

  14. Service Output • In-Out Pattern for a POST return (ack)

  15. Summary • Definition using WSDL 2.0 (IRI style & In-Out pattern) • URL naming pattern (to follow XSD XPath) • SLA on services such as limited return data size • Return data in XSD format (CIM based) • GET for non state change and POST for state change

  16. Questions & Comments

More Related