.Net 接口程序设计


在同个项目中使用前后端分离设计时,通常采用Ajax通讯。

一下展示简单使用一般处理程序 作为接口方法示例:

1、先新建一个接口响应内容类 :JsonMsg

    /// 
    /// 响应信息
    /// 
    public class JsonMsg
    {
        /// 
        /// 状态(基本不用)
        /// 
        public string statu { get; set; }

        /// 
        /// 提示信息
        /// 
        public string msg { get; set; }

        /// 
        /// 成功200  其他提示 0 错误另外定
        /// 
        public int code { get; set; }

        /// 
        /// 跳转地址
        /// 
        public string url { get; set; }

        /// 
        /// 分页数据总数
        /// 
        public int count { get; set; }

        /// 
        /// 返回数据对象(json)
        /// 
        public object data { get; set; }



    }

2、建立 接口结构类: RetunJsonMsg

        /// 
        /// 响应请求信息
        /// 
        /// 
        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
    {

        /// 
        /// 解析JSON数组生成对象实体集合
        /// 
        /// 对象类型
        /// json数组字符串(eg.[{"ID":"112","Name":"石子儿"}])
        /// 对象实体集合
        public static List DeserializeJsonToList(string json) where T : class
        {
            JsonSerializer serializer = new JsonSerializer();
            StringReader sr = new StringReader(json);
            object o = serializer.Deserialize(new JsonTextReader(sr), typeof(List));
            List list = o as List;
            return list;
        }
    }

4、建立一个一般处理程序类 :AjaxSysUser

因为在同一个工程下,与接口交互一些信息还是需要用session ,在一般处理程序中获取session值时需要继承  IRequiresSessionState 接口才能实现。

接口数据返回时需要一个相应的 响应实体(ResGetUserList)对象。

    /// 
    /// AjaxSysUser 的摘要说明
    /// 
    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;

            }
        }




        /// 
        /// 用户列表
        /// 
        /// 
        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(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;

到这步基本上接口数据已经完成返回了,前端就可以访问  一般处理程序名/方法名进行访问

前端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]);
               
            }
        });

到这步就完成了从接口创建到调用的流程。