Notes on RESTful Architecture – II. Read Only RESTful Services
From the book RESTful .NET: Build and Consume RESTful Web Services with .NET 3.5.
RESTful binding, behavior, hosting, and contracts
WebHttpBinding – uses http transport and text encoder.
WebBehavior – end point behavior to dispatch messages based on URIs and HTTP verbs.
WebSericeHost – provides RSTful services hosting configuration [WebServuceHostFactory for IIS/WAS].
WebOperationContext – contains state of the incoming request and outgoing response.
- QueryParameters – holds the collections of query string parameters. Available in IncomdingRequest of WebOperationContext.
WebGetAttribute – applied to methods to handle GET requests
WebInvokeAttribute – applied to methods to handle POST, PUT, DELETE.
- Method - a property that specifies what HTTP method to use [POST – default, PUT, or DELETE]
UriTemplate – specifies the template, mapping between the URI and a method
- “/{Variable}/{Variable}/{Variable}”
- “*”
- “/”
- “{/{Variable}/*}”
- “/Literal/{Variable}”
- “/Literal/NestedLiteralSpecialCase”
- “/Search?q={query}” – for passing parametrs via query string and collecting it using QueryParamenters object.
Serialization methods
Message - represents return value for RESTful service
- Not usually used with non-RESTful WCF [strong type are used instead]
- More complex coding to process the message
- Complete control of the XML
DataContract
- Preferred method non-RESTful regular WCF
- Cannot create attributes, elements only
XnkSerializer
- Better for RESTful WCF
- [XmlSerialization()] for [OperationContract]
- Can create attributes vs. elements [XmlAttribute(Attribute=”name”)] instead [DataMemeber]
Hybrid (DataContract + Message)
- Use DataContract for serialization.
- Use Message.CreateMessage for return type.