当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET交互Rest服务接口(Jquery的Get与Post方式)

ASP.NET交互Rest服务接口(Jquery的Get与Post方式)

2018年11月03日  | 移动技术网IT编程  | 我要评论

水塔,beyond mp3,石墨烯上市公司

本文将通过一个简单的实例,介绍如何创建一个rest服务接口,以及通过jquery去对它进行调用;主要采取两种方式分别为get跟post;其中将通过post提交简单类型(sring)以及复杂类型(自定义实现usermodel)与rest服务进行交互;

 

 

 

一 rest服务创建

 

 

其中web客户端(clintweb)不对其它层的引用,只通过rest部署后的服务进行效互;

 

 

 

1:实体层(model)

 

 

using system.runtime.serialization;

 

namespace model

{

    [datacontract]

    public class usermodel

    {

        [datamember]

        public int id { get; set; }

 

        [datamember]

        public string username { get; set; }

 

        [datamember]

        public string password { get; set; }

 

        [datamember]

        public int age { get; set; }

 

        public override string tostring()

        {

            return string.format("id:{0};姓名: {1};年龄:{2};密码:{3}",id, username, age, password);

        }

    }

}

 

此处要注意[datacontract],[datamember]在命名空间using system.runtime.serialization下面;

 

 

 

 

2:接口层(iserviceinterface)

 

 

using system.servicemodel.web;

using system.servicemodel;

using model;

namespace iserviceinterface

{

    [servicecontract]

    public interface iuser

    {

        [webget(uritemplate = "/{id}", requestformat = webmessageformat.json, responseformat = webmessageformat.json)]

        usermodel getuserfromid(string id);

 

        [webget(uritemplate = "all", requestformat = webmessageformat.json, responseformat = webmessageformat.json,

         bodystyle = webmessagebodystyle.bare)]

        list<usermodel> getalluser();

 

        [webinvoke(uritemplate = "/user/username", method = "post", requestformat = webmessageformat.json,responseformat=webmessageformat.json,

         bodystyle = webmessagebodystyle.wrappedrequest)]

        string getusername(string name);

 

        [webinvoke(uritemplate = "/user/post", method = "post", requestformat = webmessageformat.json, responseformat = webmessageformat.json,

         bodystyle = webmessagebodystyle.wrappedrequest)]

        string updateuser(usermodel model);

    }

}

 

 

 

3:逻辑层(servicebll)

 

 

using iserviceinterface;

using model;

namespace servicebll

{

    public class userbll:iuser

    {

        public static list<usermodel> getuserlist()

        {

            list<usermodel> list = new list<usermodel>()

            {

                new usermodel(){id=1,username="踏浪帅",password="123456",age=27},

 

                new usermodel(){id=2,username="wujunyang",password="345678",age=30},

                new usermodel(){id=3,username="cnblogs",password="987654",age=33}

            };

            return list;

        }

 

        public usermodel getuserfromid(string id)

        {

            usermodel item = getuserlist().where(a => a.id == int.parse(id)).singleordefault();

            if (item != null)

            {

                return item;

            }

            else

            {

                return new usermodel();

            }

        }

 

        public list<usermodel> getalluser()

        {

            return getuserlist();

        }

 

        public string updateuser(usermodel model)

        {

            return model.tostring();

        }

 

        public string getusername(string name)

        {

            return "您好:" + name;

        }

    }

}

 

后面创建的客户端传参数要跟上面各个方法的参数相同,比如:name,model等

 

 

 

4:rest服务(restservice)

 

此处新建一个文本文件把它修改成.s格式,在其里面写入:

 

<%@ servicehost language="c#" debug="true" service="servicebll.userbll" %>

web.config文件内容:

 

 

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  <system.web>

    <compilation debug="true" targetframework="4.0" />

  </system.web>

  <system.servicemodel>

    <behaviors>

      <endpointbehaviors>

        <behavior name="webhttp">

          <webhttp helpenabled="true"/>

        </behavior>

      </endpointbehaviors>

      <servicebehaviors>

        <behavior name="mapconfigbehavior">

          <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->

          <servicemetadata httpgetenabled="true"/>

          <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->

          <servicedebug includeexceptiondetailinfaults="true"/>

          <datacontractserializer maxitemsinobjectgraph="2147483647"/>

        </behavior>

      </servicebehaviors>

    </behaviors>

    <bindings>

      <webhttpbinding>

        <binding name="webhttpbindconfig" receivetimeout="00:30:00" sendtimeout="00:30:00" maxreceivedmessagesize="104857600">

          <readerquotas maxstringcontentlength="2147483647" maxarraylength="2147483647"/>

          <security mode="none"></security>

        </binding>

      </webhttpbinding>

    </bindings>

    <services>

      <service name="servicebll.userbll" behaviorconfiguration="mapconfigbehavior">

        <endpoint binding="webhttpbinding" contract="iserviceinterface.iuser" bindingconfiguration="webhttpbindconfig" behaviorconfiguration="webhttp"/>

      </service>

    </services>

  </system.servicemodel>

</configuration>

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网