REST stands for Representational state transfer
Very popular for services
Principle: is if there is any resource then everyone has to access that resource. Rest also defines that URL should be friendly.
REST URL should be as must as plane URL
REST is the term coined by Ray Fielding in PH.D to describe an architecture style of networking systems.
There are Rest services & Rest –Like services which uses XML and HTTP.
Rest outlines the philosophy of mapping.
HTTP Verbs to Create, retrieval, update, delete
Rest is not only for services, it is the for Html 5.
Rest architecture says everything should be a resources.
Rest say we will develop a program and give the URL to everyone.
REST is not approved by W3 till now.
Note:
When we talk about the Database as a resource we usually talk in terms of CRUD operations. I.e. Create, Retrieve, Update and Delete. Now, What REST says is that for a remote resource all these operations should be possible and they should be possible using simple HTTP protocols
Actually only the difference is how clients access our SERVICE .Normally, a WCF service will use SOAP, but if you build a REST service, clients will be accessing your service with a different architectural style (calls, serialization like JSON, etc.)
We have to prepare help File for Rest for the client, saying that what are the methods somewhat we have to give the reply to client.
Now the basic CRUD operations are mapped to the HTTP protocols in the following manner:
· GET: This maps to the R (Retrieve) part of the CRUD operation. This will be used to retrieve the required data (representation of data) from the remote resource.
· PUT: This maps to the U (Update) part of the CRUD operation. This protocol will update the current representation of the data on the remote server.
· POST: This maps to the C (Create) part of the CRUD operation. This will create a new entry for the current data that is being sent to the server.
· DELETE: This maps to the D (Delete) part of the CRUD operation. This will delete the specified data from the remote server.
Now, the list of Employee Details can be retrieved as
To retrieve specific employee details from the Employee Table we have an Id Column in the database. To access the details of particular employee
Since these are GET
requests, data can only be retrieved from the server. To perform other operations, if we use the similar URI structure with PUT
, POST
or DELETE
operation, we should be able to create, update and delete the resource from the server.
WCF Rest supports for REST
Programming Model
WebGetAttribute
WebInvokeAttribute
WebServiceHost
Channels & Dispatcher Infrastructure.
WebHttpBinding
WebHttpBehaviour
Utility Classes & Extensibility Points
Uri Template
Uri Template Table
Query String Converter
WebHttpDispatchOperationSelector
WebGet:
Is the attribute which make our [Operation Contract] as web method enabled to consume as Rest Style & Binding is WebHttpBinding
[WebGet]
[Operation Contract]
Void Add ();
Web InvokeAttribute:àWeb Get +All Others
Now, How to Call this Method
Here Add is the method name
If it returns string, we will get result also as string.
WebServiceHostFactory
To make Rest Enabled all the following things are required
System.ServiceModel.dll
System.ServiceModel.Web.dll
To make URL as Friendly we use uri Template
Example
It is not friendly URL
So friendly URL is
To make URL as friendly:
[WebGet(UriTemplate=”Add/{a}/{b}”)]
[operationContract]
Void Add(int a, int b)
Note: Webhttpbinding does not support SOAP format. what format is Json,pox
In visual studio 2010 we have two ways to create Restful Services:
Start a WCF Service as usual and add Operation Contract as required
Additionally add Rest attribute that is web get /web invoke
System. Service model namespace & system. Service model. Web namespaces to be added.
Go to web.config and add End Points with WebHttpBinding only.
This binding is enough for consuming and also hosting.
Go to service directive .svc file and add factory=”webservicehostfactory” attribute to this directive.
Difference between Web Services, WCF, WCF Rest
Web Service:
It is based on SOAP and return data in XML form.
It support only HTTP protocol.
It is not open source but can be consumed by any client that understands XML.
It can be hosted only on IIS
WCF
It is also based on SOAP and return data in XML form.
It is the evolution of the web service(ASMX) and support various protocols like TCP, HTTP, HTTPS, Named Pipes, MSMQ.
The main issue with WCF is, its tedious and extensive configuration.
It is not open source but can be consumed by any client that understands XML.
It can be hosted with in the application or on IIS or using WINDOWS SERVICE.
WCF REST
To use WCF as WCF Rest service you have to enable webHttpBindings.
It support HTTP GET and POST verbs by [WebGet] and [WebInvoke] attributes respectively.
To enable other HTTP verbs you have to do some configuration in IIS to accept request of that particular verb on .svc files
Passing data through parameters using a WebGet needs configuration. The UriTemplate must be specified
It support XML, JSON