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

 

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

 


 

posted @ 2022-03-08 16:10  znyzny  阅读(634)  评论(0)    收藏  举报