html5中文学习网

您的位置: 首页 > 网络编程 > ASP.NET » 正文

ASP.NET交互Rest服务接口(Jquery的Get与Post方式)_.NET教程_编程技术

[ ] 已经帮助:人解决问题

本文将通过一个简单的实例,介绍如何创建一个Rest服务接口,以及通过JQUERY去对它进行调用;主要采取两种方式分别为Get跟Post;其中将通过Post提交简单类型(Sring)以及复杂类型(自定义实现UserModel)与Rest服务进行交互;6JQHTML5中文学习网 - HTML5先行者学习网

一 Rest服务创建6JQHTML5中文学习网 - HTML5先行者学习网

6JQHTML5中文学习网 - HTML5先行者学习网

其中Web客户端(ClintWeb)不对其它层的引用,只通过Rest部署后的服务进行效互;6JQHTML5中文学习网 - HTML5先行者学习网

1:实体层(Model)6JQHTML5中文学习网 - HTML5先行者学习网

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下面;6JQHTML5中文学习网 - HTML5先行者学习网

 
2:接口层(IServiceInterface)6JQHTML5中文学习网 - HTML5先行者学习网

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)6JQHTML5中文学习网 - HTML5先行者学习网

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等6JQHTML5中文学习网 - HTML5先行者学习网

4:Rest服务(RestService)6JQHTML5中文学习网 - HTML5先行者学习网

此处新建一个文本文件把它修改成.svc格式,在其里面写入:6JQHTML5中文学习网 - HTML5先行者学习网

<%@ ServiceHost Language="C#" Debug="true" Service="ServiceBll.UserBll" %>

web.config文件内容:6JQHTML5中文学习网 - HTML5先行者学习网

<?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>

6JQHTML5中文学习网 - HTML5先行者学习网
6JQHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助