(原创)多系统间需要对接,我写了一个接口框架。实用性非常强,写出来大家交流。需要的可以直接搬过去用。(第1篇)

业务是这样:有个手机app,在ios或者android上开发的,他需要访问服务器数据。我在服务器上,做了一个接口,专门开放一些数据给app去用。

我写的接口优势:我写的这个接口,全部是面向对象结构,代码简单而非常好用,极易扩展。可读性很强,容错性高。

个人建议有需要的同学可以直接拿去用到项目中。。我会一步步讲他的制作方法。

第1步,创建一个工程,在工程中,创建一个网站,以及一个业务操作类库。如下图:

上图是网站。

图片
上图是类库

第2步,创建几个根类.cs文件。
图片
如上图,创建:
Post.cs文件:用于接收Post请求
Get.cs文件:用于接收Get请求
Factory.cs文件:模块工厂。比如你的手机App有新闻模块,有语音模块,有各种模块。所有模块都从这个工厂获取实例对象。
Code.cs文件:返回给调用接口的人,一些约定好的提示码以及信息。
BaseCommand.cs文件:请求的基类。。不管是Post还是Get请求,都继承这个基类。

第3步。写基础文件的代码。一个一个文件的贴图细说。
先来:BaseCommand.cs文件:

图片
图片

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Script.Serialization;
using ZGMZ.Common;
namespace ZGMZ.UIL.App
{
    /// <summary>
    /// 基类
    /// </summary>
    public abstract class BaseCommand
    {
        internal BaseCommand() { }
        /// <summary>
        /// 消息结果
        /// </summary>
        internal Code Code { get; set; }
        /// <summary>
        /// 返回的消息详细说明
        /// </summary>
        protected string ErrorMessage { get; set; }
        /// <summary>
        /// 要进行序列化的对象
        /// </summary>
        protected object OutObject { get; set; }
        /// <summary>
        /// 输出参数
        /// </summary>
        public string Output
        {
            get
            {
                string result = "\"\"";
                if (this.OutObject != null)
                {
                    result = this.Serialize(this.OutObject);
                }
                //输出结果
                string output = "{\"CodeId\":\"" + this.Code.CodeId + "\",\"CodeDescription\":\"" + this.Code.Description + "\",\"ErrorMessage\":\"" + HtmlHelper.RemoveQuotes(this.ErrorMessage) + "\",\"Result\":" + result + "}";
                return output;
            }
        }
        /// <summary>
        /// 序列化
        /// </summary>
        /// <param name="queryParameters"></param>
        /// <returns></returns>
        private string Serialize(object o)
        {
            JavaScriptSerializer jss = new JavaScriptSerializer();
            string data = jss.Serialize(o);
            return data;
        }
        /// <summary>
        /// 执行操作
        /// </summary>
        public abstract void Excute();
    }
}

 

代码解说:
这是一个抽象基类。
Code Code { get; set; }    是一个返回消息码的属性访问器。当调用接口时,不管成功与否,都要返回消息码给对方。


string ErrorMessage { get; set; }    是消息码的说明。。比如消息码是100。他的对应说明是“成功”。


object OutObject { get; set; }    当别人调用了接口后,要返回一个结果给对方。在返回结果前,我们要先存储这个对象。。因为我们不知道要返回什么类型的东西给调用端,所以,我们用object做为类型。先将要返回的对象保存起来。


string Output{ get; set; }     输出结果。。我们保存的是object类型的OutObject对象,要想将这个object直接返回给调用方是不行的。因为调用方,一般会要求得到的是 json格式,或者得到xml格式。。那么这个Output的作用就是将object值转换成string类型的json字符串或者xml字符串,输出给 调用方。


string Serialize(object o)    序列化。将object OutObject对象,通过这个序列化的方法,可以变成string类型的json字符串。最后使用Output属性,可以输出给调用方。


abstract void Excute()    这是一个抽象方法。比如app请求服务器时,肯定是要实现一个功能的。这个Excute就是实现这个业务逻辑。

 

 

当你愿意看到这里时,后续还有4篇:下面是链接:

(原创)面向对象的系统对接接口编写。第2篇 http://www.cnblogs.com/mazhiyuan/p/5224049.html

(原创)面向对象的系统对接接口编写。第3篇 http://www.cnblogs.com/mazhiyuan/p/5224050.html

(原创)面向对象的系统对接接口编写。第4篇 http://www.cnblogs.com/mazhiyuan/p/5224054.html

(原创)面向对象的系统对接接口编写。第5篇(完结) http://www.cnblogs.com/mazhiyuan/p/5224056.html

 

如果看完,有不明白的可以评论发给我。

 

真的很好用的。。有需要做接口的同学。。可以把整个框架拿去用下。

 

 

提供源码下载,请点击:源码

posted @ 2016-02-28 08:50    阅读(6457)  评论(19编辑  收藏  举报