Sometime we need to work with Json data in WCF REST services to
make data available on across different platforms .so let us learn in
this article how to make CRUD operations in WCF REST service and
communicate using Json data .To Perform CRUD operations in WCF REST
service we need to use following HTTP methods
- GET : Get the resource (Records) from particular source such as SQL database.
- POST : Used to insert the records into the particular source such as SQL, Oracle database.
- PUT : Used to modify the resource or records.
- DELETE : used Delete the specific resource or record from particular source.
Prerequisites
To understand WCF REST service, you need to at-least beginner knowledge on WCF ,if you are beginner in WCF then please refer my following articles of WCF.
I hope you have read above articles .
Step 1: Create WCF Service as.
- "Start" - "All Programs" - "Microsoft Visual Studio 2015".
- "File" - "New Project" - "C#" - WCF Service Application as shown in below.
3 .Provide the project name such as "PayMentRESTService " or another as you wish and specify the location.
4. Now delete the auto created Interface and svc file which we will create new one so beginners can understand it.
5. Now Add New WCF Service file and give name PayMentRESTService are as:
I hope you have followed the same steps and and learned how to add WCF Service. After adding Service file then the project solution explorer will be look like as follows
Step 2: Configure REST Service Template.
Now open the the IPaymentService.cs Interface file and write the following code for CRUD operation:
using System.ServiceModel; using System.ServiceModel.Web; namespace PayMentRESTService { [ServiceContract] public interface IPayMentService { //To Insert or POST Records [OperationContract] [WebInvoke(Method = "POST", UriTemplate = "/AddPayee/{Name}/{City}", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] void AddPayee(string Name, string City); //To Get Records from database [OperationContract] [WebInvoke(Method = "GET",UriTemplate = "/PayBill/{PayId}", BodyStyle = WebMessageBodyStyle.Wrapped,RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)] string PayBill(string PayId); //To Update records [OperationContract] [WebInvoke(Method = "PUT", UriTemplate = "/UpdateBillPayment/{PayId}/{TransId}", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] void UpdateBillPayment(string PayId,string TransId); //To delete records [OperationContract] [WebInvoke(Method = "DELETE", UriTemplate = "/RemovePayee/{Id}", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] void RemovePayee(string Id); } }
Let's understand code including REST Template.
- IPayMentService : REST Service interface name
- Method : HTTP methods types it can be GET,POST,PUT,DELETE and other
- UriTemplate : To Define url structure that how can be serice method accessed at client.
- BodyStyle : Allows to define message body style format such as Bare, Wrapped etc.
- RequestFormat : Defines in which message format does request come from client such xml or json.
- ResponseFormat : Defines what message format does service return to the client as a part of response such xml or json.
Step 3: Implement IPaymentService.cs interface methods into PaymentService.svc.cs file as.
public class PayMentService : IPayMentService { public void AddPayee(string Name, string City) { //write database related insert logic here. } public string PayBill(string PayId) { return "Transaction having PayId " + PayId + " is successful"; //write database related data retrival logic here. } public void RemovePayee(string Id) { //write database related delete logic here. } public void UpdateBillPayment(string PayId, string TransId) { //write database related update logic here. } }
End Points and Service Behaviors configuration is very important in WCF Service ,many people saying it much complicated to configure but trust me its much easier and simple with powerful intellisense. Lets open web.config file and find system.serviceModel tag and follow below steps
Configure service behaviors as:
Configure End points as:
While configuring Endpoints Tag automatically shows how to set and what contract because it shows list of contract files (Interfaces) i.e. service contract .I hope you got basic idea about the End points configuration . Soon I will post video on this. After configuring Endpoints and service behaviors the system.serviceModel tag section of web.config file will be look like as follows:
<system.serviceModel> <behaviors> <serviceBehaviors > <behavior name="ServiceBehavior"> <!-- To avoid disclosing metadata information, set the values below to false before deployment --> <serviceMetadata httpGetEnabled="true"/> <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> <endpointBehaviors> <behavior name="web"> <webHttp/> </behavior> </endpointBehaviors> </behaviors> <services> <service name="PayMentRESTService.PayMentService" behaviorConfiguration="ServiceBehavior"> <endpoint binding="webHttpBinding" contract="PayMentRESTService.IPayMentService" behaviorConfiguration="web"> </endpoint> </service> </services> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> </system.serviceModel>
Step 5: Test REST Service.
Now our service is ready .lets test it using REST client of browser extension are as
POST ( To insert records)
REST Service URL will be
http://localhost:64858/PayMentService.svc/AddPayee/vithal Wadje/Latur
In the above url last two parameters are input parameters .now test with REST client as
Using PUT
Using DELETE
Note:
- Since this is a demo, it might not be using proper standards, so improve it depending on your skills.
- CRUD Stands for create,Read,update and delete
I hope this article is useful for all readers. If you have any suggestion then please contact me.
Post a Comment