WCF REST Service with JSON Data

Many times there is need to get the output in different message format such as XML,JSON or custom message format to fulfill the software requirement. So in this article we will learn how create WCF REST Service which return JSON format output .

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.
  1. Introduction to WCF Services
  2. Introduction To WCF Endpoints 
  3. Creating WCF Service
I hope you have read above articles , now let us start with WCF REST from definition

 What is WCF REST ?
REST stands for Representational state transfer which is technique to communicate on cross platform application and exchange the data in JSON or XML format with the help of GET,POST,PUT,DELETE methods of HTTP protocol.

To return JOSN  as output we need to set RequestFormat of WebMessageFormat to JSON in REST template which we will learn in next.

let us briefly understand about the HTTP methods which is most commonly used to create WCF REST service as:
  • 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.
I hope you understand basic about REST concept , Now let us start step by step to create WCF REST JSON Service.

Step 1: Create WCF Service.

To know how to create WCF service in depth please refer my article Creating WCF Service . So In this let see simple way to create WCF service:
  1. "Start" - "All Programs" - "Microsoft Visual Studio 2015".
  2. "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:

using System.ServiceModel;
using System.ServiceModel.Web;

namespace PayMentRESTService
{

    [ServiceContract]
    public interface IPayMentService
    {
        [OperationContract]
        [WebInvoke(Method = "GET",UriTemplate = "/PayBill/{PayId}", BodyStyle = WebMessageBodyStyle.Wrapped,RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)]
        string PayBill(string PayId);
       
    }
}
Let us understand above REST Template using following diagram

I hope you have understood the basic REST Template from above image.In the above example we set WebMessageFormat is JSON , So it will return the JSON format output.

Step 3: Implement IPaymentService.cs interface methods into PaymentService.svc.cs file as.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace PayMentRESTService
{
    
    public class PayMentService : IPayMentService
    {
        public string PayBill(string PayId)
        {
            return "Transaction having PayId " + PayId + " was successful";
        }
    }
}

Now our REST Service Code is ready ,lest us complete another more steps.
 
Step 4: Configure End Points and Service Behaviors in web.config file as:

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>
I hope you have done same configuration which i have done .

Step 5: Test REST Service.

Now our service is ready .lets test it using REST client of Mozilla browser are as

Our REST Service URL will be http://localhost:64858/PayMentService.svc/PayBill/100

In the above Response of WCF REST service you have seen that status code is 200 OK. It means our service executed successfully .lets confirm by switching to Response Body tab of REST client as

From preceding output its clear that out service executed successfully and as per configuration its returned JSON output .Hope from preceding examples we have learned how to create WCF REST Service.
Note:
  • Configure the database connection in the web.config file depending on your database server location.
  • Download the Zip file of the sample application for a better understanding.
  • Since this is a demo, it might not be using proper standards, so improve it depending on your skills.
Summary

I hope this article is useful for all readers. If you have any suggestion then please contact me.




Post a Comment

www.CodeNirvana.in

Protected by Copyscape
Copyright © Compilemode