Call WCF Rest Service without svc file and wcf configuration

1. Create Empty Web Project and add the following class along with its associated interface code

public class Person
    {
        public string Id
        {
            get;
            set;
        }

        public string Name
        {
            get;
            set;
        }
    }

    [ServiceContract]
    interface IPersonService
    {

        [OperationContract]
        Person GetPO();

        [OperationContract]
         string SayHello(string name);

        [OperationContract]
        Person GetPerson(string id);  

 

        [OperationContract] 
        Person InsertPerson(Person person); 
       
        [OperationContract]
        Person UpdatePerson(string id, Person person); 
       
        [OperationContract]
        void DeletePerson(string id);

        [OperationContract]
        string SE();

        [OperationContract]
        Stream Post(string message, int x, int y);
    }

 

 

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class PersonService : IPersonService
    {
        public List<Person> PersonList= new List<Person>();

         [WebGet(UriTemplate = "SE")]
         public string SE()
    {
      return "this is test";
    }

         [WebGet(UriTemplate = "ss")]
         public Person GetPO()
         {
             Person p = new Person();
             p.Id = "testid";
             p.Name = "personname";
             return p;
         }

         [WebGet(UriTemplate = "SayHello({name})")]
public string SayHello(string name)
    {

        return string.Format("Hello, {0}" , name);

    }


        [WebGet(UriTemplate = "Person({id})")]
        public Person GetPerson(string id)
        {
            Person p = new Person();
            p.Id = id;
            p.Name = "person name";
            return p;
        }  


   


        [WebInvoke(UriTemplate = "Ins", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
        public Person InsertPerson(Person person) 
        {

            Person p = person;
            p.Id = "changedid";
            return p;
       
        } 
       
        [WebInvoke(UriTemplate = "Person({id})", Method = "PUT")] 
        public Person UpdatePerson(string id, Person person) 
        {
            var a = from p in ps
                    where p.Id == id
                    select p;
            return a as  Person;

        } 
       
        [WebInvoke(UriTemplate = "Person({id})", Method = "DELETE")] 
        public void DeletePerson(string id)
        {
            ps.RemoveAt(int.Parse(id));

        }


        [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, UriTemplate="")]
        public Stream Post(string message, int x, int y) { return new MemoryStream(Encoding.UTF8.GetBytes("<b>" + message + (x + y) + "</b>")); }
   
    }

 

Web.config :

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
  <system.serviceModel>
     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" minFreeMemoryPercentageToActivateService="1"/>
    <standardEndpoints>
           <webHttpEndpoint>
           <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>  
      </webHttpEndpoint>  
    </standardEndpoints>

   
  </system.serviceModel>
</configuration>

 

minFreeMemoryPercentageToActivateService attribute is needed only when the red memory error occurs.

 

HTML Page:

function getPerson() {


            var name = $("#name").val();
            $.ajax({
                cache: false,
                type: "GET",
                async: false,
                url: "Person"+ "(" + name +")",
                dataType: "json",

                processData: false,

                success: function (msg) {

                    alert(msg.Name);

                },

                error: function (err) {

                    //error handling

                    alert("Error Occured!" + err.msg);

                }

            });

        }

 

 function postdata() {
            alert("begin");
            $.ajax({  url: "/",
                      type: "POST",
                      contentType: "application/json",
                      data: '{"x":"1","y":"2","message":"The answer is: "}',
                      dataType: "html",
                      success: function (data) { $('body').html(data); },
                      error: function (err) { alert("Error Occured!" + err.msg);}
                  });
              }

              function InsertPeople() {
                  //调用方法并传递一个json格式的Person对象,返回结果是一个json格式对象
                  var data = { Name: "Denny", Id: "23" };
                  var jsonStr = JSON.stringify(data); //将对象格式化成json字符串
                  sendAJAX("Ins", jsonStr,
                   function (msg) {                                
                       alert(msg.Name + "   " + msg.Id + " this is a test case");
                });
           }
             

              function sendAJAX(url, data, success) {
                  $.ajax({
                      type: "POST",
                      contentType: "application/json",
                      url: url,
                      data: data,
                      processData: false,
                      success: success,
                      error: function (XMLHttpRequest, textStatus, errorThrown) {
                          alert("Error Occured!");
                      }
                  });
              }

 

The code above is the demo code for calling wcf rest service without svc file using jquery, hopefully it's a basic guideline for all of you:)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值