REST stands for Representational State Transfer
Like in any other product's successful development, an architectural design plays an important role and it is mostly for describing the features of how that product will be built. Software also demands such kinds of architecture or we can architectural design that simply by building an environment of software by describing the features that are the guidelines to implement the software.
REST Background
The concept of REST was first coined by Roy Thomas Fielding in 2000, he was one of the people working on HTTP. The reason why I am providing a little information about Fielding is only because our REST-based services are also implemented on a specification on which the internet depends, HTTP. REST is built on a client-server architectural style.
To learn how REST works we should understand how the web works, since REST uses the web, specifically HTTP.
HTTP Verbs
To interact with resources and their representations REST uses the HTTP communication protocol that defines a set of standard method (verbs), headers and status codes like 404, 402 and so on.
- HTTP Verbs
- GET
GET basically requests a resource representation.
- POST
POST actually works for submitting the data that must be processed at an endpoint (resource).
- DELETE
DELETE allows to delete a resource.
- PUT
Create or update a resource.
- HEAD
Use to retrieve the header, its works similar to GET, in other words to retrieve something. The only difference is HEAD retrieves only headers but GET retrieves the body.
- OPTIONS
Returns supported methods by resource.
More precisely, GET, POST, DELETE and PUT provide the basic CRUD operations for the web whereas HEAD and OPTIONS provide the ability to retrieve metadata (MSDN).
- HTTP Status Codes
Constraints of REST
In REST what actually happens is that the user interacts with resources via a unique Uniform Resorce Identifier (URI). A URI is how named or represented resources are addressed. Resource interaction ids are done using HTTP verbs (GET, POST, PUT and DELETE), we can also include resource types (XML, JSON, JPG and PNG) as HTTP content.
Let's create a RESTFul service.
Create > New Project > WCF > WCF Service Application
Delete the services created by default.
Add your own service. Go to Project then select Add > Add New Item.
Add WCF Service
WebGet and WebInvoke
To make the service contract called using the HTTP Protocol, in other words Rest Protocol, we need to add WebGet and WebInvoke attributes that may include properties like RequestFormat, ResponseFormat, Method and UriTemplate. If you can't find the WebGet and WebInvoke attributes then you need to add a System.ServiveModel.Web DLL reference.
The WebGet attribute maps to HTTP GET requests whereas the WebInvoke attribute is mapped to HTTP POST by default, it can also be set for other HTTP methods like DELETE and PUT.
- UriTemplate basically maps HTTP parameters with a parameter of the service contract.
- RequestFormat
WebMessageFormat.Xml (by default)
WebMessageFormat.Json
- ResponseFormat
WebMessageFormat.Xml (by default)
WebMessageFormat.Json
We can have either of the following two formats:
Add the following contract in IRESTFulDemo to get the DefaultData format, XML
And in RESTFulDemo.svc.cs:
For JSON format:
Implementation
Binding
Closure
Now our REST service is ready.I hope you like it. Coments are welcome.
Happy Learning !