Sunday, 29 November 2015

Restful Services In WCF

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;
namespace WcfServiceLibrary_demo
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json,UriTemplate="sample",BodyStyle=WebMessageBodyStyle.Wrapped)]
        RootObject GetData(User value, paramters lstparmterts, List<items> lstItems);


        [OperationContract]
        [WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, UriTemplate = "Getdata1")]
        RootObject GetData_new();

        // TODO: Add your service operations here
    }

    [DataContract]
    public class User
    {
        [DataMember]
        public string empoyeeno { get; set; }
        [DataMember]
        public string empoyeename { get; set; }
        [DataMember]
        public string empoyeeid { get; set; }
        [DataMember]
        public string empoyeemail { get; set; }
        //4 properties

    }


    [DataContract]
    public class paramters
    {
        [DataMember]
        public string OpCode { get; set; }
        [DataMember]
        public string MaxCount { get; set; }
        [DataMember]
        public string CheckMaxCount { get; set; }
        [DataMember]
        public string CheckUserContext { get; set; }

    }


    [DataContract]

    public class items
    {
        [DataMember]
        public string SearchTerm { get; set; }
        [DataMember]
        public string SearchCode { get; set; }



    }

    [DataContract]
    public class returnitems
    {
        [DataMember]
        public string oppid { get; set; }
        [DataMember]
        public string empno { get; set; }

    }

    [DataContract]
    public class RootObject
    {
        [DataMember]
        public List<Datum> Data { get; set; }
    }
    [DataContract]
    public class Datum
    {
        [DataMember]
        public string ReturnFlag { get; set; }
        [DataMember]
        public string ReturnMessage { get; set; }
        [DataMember]
        public string ItemCount { get; set; }
        [DataMember]
        public List<returnitems> Item { get; set; }
    }


}
///////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Text;

namespace WcfServiceLibrary_demo
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in both code and config file together.

   
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

    public class Service1 : IService1
    {

        public RootObject GetData(User value, paramters lstparmterts, List<items> lstItems)
        {
            // throw new NotImplementedException();

            RootObject root = new RootObject();
            List<Datum> datums = new List<Datum>();
            Datum datum = new Datum();
            datum.ReturnFlag = "S";
            datum.ReturnMessage = "Success";
            datum.ItemCount = "10";//here, it is no.of Records which you got.
            datums.Add(datum);
            //datum.Item
            List<returnitems> items = new List<returnitems>();
            for (int i = 0; i < 2; i++)
            {
                returnitems item = new returnitems();
                item.oppid = "opp1";
                item.empno = "acc1";

                items.Add(item);
            }
            datum.Item = items;
            root.Data = datums;
            //DataContractJsonSerializer js = new DataContractJsonSerializer(root);
            return root;
        }


        public RootObject GetData_new()
        {

            RootObject root = new RootObject();
            List<Datum> datums = new List<Datum>();
            Datum datum = new Datum();
            datum.ReturnFlag = "S";
            datum.ReturnMessage = "Success";
            datum.ItemCount = "10";//here, it is no.of Records which you got.
            datums.Add(datum);
            //datum.Item
            List<returnitems> items = new List<returnitems>();
            for (int i = 0; i < 2; i++)
            {
                returnitems item = new returnitems();
                item.oppid = "opp1";
                item.empno = "acc1";

                items.Add(item);
            }
            datum.Item = items;
            root.Data = datums;
            //DataContractJsonSerializer js = new DataContractJsonSerializer(root);
            return root;
        }
    }
}
//////////////////////////////////////////////////
web.Config File


<?xml version="1.0"?>
<configuration>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <services>
      <service name="WcfServiceLibrary_demo.Service1">
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="" behaviorConfiguration="webbehviour"
          name="wpebht" contract="WcfServiceLibrary_demo.IService1" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="webbehviour">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="webHttpsBinding" scheme="https" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
        To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.
      -->
    <directoryBrowse enabled="true"/>
  </system.webServer>

</configuration>




No comments:

Post a Comment