.Net 接口程序设计(一般处理程序)
通过一般处理建立接口
1、先新建一个接口响应内容类
2、建立 接口结构类: RetunJsonMsg
3、建立一个将Datable转为JSON格式的转换类
4、建立一个一般处理程序类 :AjaxSysUser
5、前端Ajax 调用接口示例
===========================================================================================
===========================================================================================
在同个项目中使用前后端分离设计时,通常采用Ajax通讯。
一下展示简单使用一般处理程序 作为接口方法示例:
1、先新建一个接口响应内容类 :JsonMsg
/// <summary> /// 响应信息 /// </summary> public class JsonMsg { /// <summary> /// 状态(基本不用) /// </summary> public string statu { get; set; } /// <summary> /// 提示信息 /// </summary> public string msg { get; set; } /// <summary> /// 成功200 其他提示 0 错误另外定 /// </summary> public int code { get; set; } /// <summary> /// 跳转地址 /// </summary> public string url { get; set; } /// <summary> /// 分页数据总数 /// </summary> public int count { get; set; } /// <summary> /// 返回数据对象(json) /// </summary> public object data { get; set; } }
2、建立 接口结构类: RetunJsonMsg
/// <summary> /// 响应请求信息 /// </summary> /// <returns></returns> public static JsonMsg RetunJsonMsg(string msg,int count,object data,string url="") { JsonMsg ajaxMsg = new JsonMsg() { statu = "ok", url = url, msg = msg, code = 0, count = count, data = data }; return ajaxMsg; }
3、建立一个将Datable转为JSON格式的转换类:JsonSwitchCls
public class JsonSwitchCls { /// <summary> /// 解析JSON数组生成对象实体集合 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="json">json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])</param> /// <returns>对象实体集合</returns> public static List<T> DeserializeJsonToList<T>(string json) where T : class { JsonSerializer serializer = new JsonSerializer(); StringReader sr = new StringReader(json); object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List<T>)); List<T> list = o as List<T>; return list; } }
4、建立一个一般处理程序类 :AjaxSysUser
因为在同一个工程下,与接口交互一些信息还是需要用session ,在一般处理程序中获取session值时需要继承 IRequiresSessionState 接口才能实现。
接口数据返回时需要一个相应的 响应实体(ResGetUserList)对象。
/// <summary> /// AjaxSysUser 的摘要说明 /// </summary> public class AjaxSysUser : IHttpHandler, IRequiresSessionState { SysUserBusiness SysUserBusiness = new SysUserBusiness(); public void ProcessRequest(HttpContext context) { string type = context.Request["type"] == null ? "" : context.Request["type"].ToString().Trim(); switch (type) { case "GetUserInfo": GetUserInfo(context); break; } } /// <summary> /// 用户列表 /// </summary> /// <param name="context"></param> public void GetUserList(HttpContext context) { RetunJsonMsg ajaxMsg = null; var page = Convert.ToInt32(context.Request["page"].ToString().Trim()); var limit = Convert.ToInt32(context.Request["limit"].ToString().Trim()); var user_code = context.Request["user_code"].ToString().Trim(); var customer_no = context.Request["customer_no"].ToString().Trim(); var customer_name = context.Request["customer_name"].ToString().Trim(); int count = SysUserBusiness.GetUserListCount(user_code, customer_no, customer_name);
//获取数据库数据 DataSet ds = SysUserBusiness.GetUserList(page, limit, user_code, customer_no, customer_name); DataTable dataTable = ds.Tables[0];
//直接使用DataTable 进行转换为JSON string strJson = JsonConvert.SerializeObject(dataTable);
//将响应的JSON数据转为对象 进行返回 var objJson = JsonSwitchCls.DeserializeJsonToList<ResGetUserList>(strJson); //响应 ajaxMsg = PubUserIsLogin.RetunJsonMsg("获取成功", count, objJson, ""); context.Response.Write(new JavaScriptSerializer().Serialize(ajaxMsg)); return; } }
这里需要引用:
using Newtonsoft.Json;
using System.Web;
using System.Web.Script.Serialization;
using System.Web.SessionState;
到这步基本上接口数据已经完成返回了,前端就可以访问 一般处理程序名/方法名进行访问
5、前端Ajax 调用接口示例:
//获取用户信息 $.get("/Ajax/AjaxSysUser.ashx?type=GetUserInfo", { "user_code" : userCode }, function (objdata) { //debugger; var obj = JSON.parse(objdata); var data1 = obj.data[0]; for (n in data1) { //$('#' + n).val(data1[n]); $('#' + n).html(data1[n]); } });
到这步就完成了从接口创建到调用的流程。
浙公网安备 33010602011771号