开发日记:接口开发设计
2014-12-24 09:56
204 查看
接口开发使用规则 业务术语: 请求:通过HTTP协议把需要传输的数据发送给接收方的过程。 返回:根据得到的数据处理完成后,将处理完成的结果反馈给接收方。 敏感词:带有敏感政治倾向,暴力倾向,不健康色彩或不文明的词。 特殊字符:特殊字符包括:^ | $ # 等。 操作结果:成功失败,成功返回结果,失败返回结果错误信息。 操作流程:执行之前,执行之后,正在执行。 接口编写规则: 1. 所有的接口必须包含method和version参数。 2. 所有的接口增加了版本号管理,以便适应多个不同版本客户端的使用。 3. 统一的接口调用方式,减少切换思维导致编码速度下降。 4. 接口返回结果统一使用标准的JSON格式,暂时不考虑使用XML格式。 5. 所有的接口必须要有日志,方便维护。 接口接入规则: 1. 配置合作着接入ID必须是唯一的。 2. 所有的接口必须包含method和version参数。 3. 参数列表中,不可空的参数必须配置。 4. 参数列表中,可空的但需要多选一的多个参数中,必须配置至少一个。 5. 字符串转化成字节流时指定的字符集必须与接口一直,常用的字符串编码有:(ASCII/Unicode/UTF-8)。 6. 接口数据传输必须使用http协议,支持get或post方式提交。 7. 保证网络顺畅,防止重复提交。 8. 如果响应时间过长直接导致数据返回失败,提示接收端重新提交。 接口编码设计: 使用抽象依赖倒置思维进行接口设计 · 定义一个通用抽象类
· 所有接口继承这个抽象类 如下:
· 使用IHttpHandler方式对外的代码
接口调用示例:
以下是一个接口的描述
Android接口调用示例:
调用 人员漏巡统计 接口示例
JQuery接口调用示例:
时间查询接口参数设计
public interface IService { /// <summary> /// 调用服务。 /// </summary> void Invoke(HttpContext context); } public abstract class Service { protected abstract void Execute(HttpContext context); public void Invoke(HttpContext context) { this.Execute(context); } }
· 所有接口继承这个抽象类 如下:
public class CompanyPersonnelOmitTotal : Service { protected override void Execute(HttpContext context) { //默认执行1.0版本的业务逻辑 string ver = LRequest.GetString("version"); if (ver == "2.0"){ //在这里编写业务规则 }else{ //在这里编写业务规则 } } }· 上位机调用接口API
public class TestService : Service { protected override void Execute(HttpContext context) { lock (this) { string sMothod = LRequest.GetString("method"); IPatrolNew p = ClassFactory(LRequest.GetString("version")); var result = (Result)MethodCaller.CallMethod(p, sMothod, context); context.Response.Clear(); if (result.ResObject != null) { if (result.ResObject is DataTable) { var table = result.ResObject as DataTable; string strjson = JsonHelper.DataTableToJSONStr(table).ToString(); context.Response.Write(strjson); } else if (result.ResObject is string) { string strjson = result.ResObject as string; context.Response.Write(strjson); } } else { context.Response.Write(result.StatusCode.ToString()); } } } private IPatrolNew ClassFactory(string version) { IPatrolNew p; switch (version) { case "1.0": p = new Patrol2(); break; default: p = new Patrol2(); break; } return p; } }
· 使用IHttpHandler方式对外的代码
public class LCLPolling : IHttpHandler { public void ProcessRequest(HttpContext context) { var ser = new TestService(); ser.Invoke(context); } }
接口调用示例:
以下是一个接口的描述
Android接口调用示例:
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("method"," GetCompanyPersonnelOmitTotal")); params.add(new BasicNameValuePair("departId","725")); params.add(new BasicNameValuePair("dateType","currMonth")); try { String result = HttpUtilByPost.httpPostData("http:192.168.1.118:6666\LAndroid\LCLPolling.ashx ", params); JSONObject json = new JSONObject(result); if(json.length() == 0){ System.out.println("empty json"); return; } JSONArray array = json.optJSONArray("object"); for(int i = 0;i < array.length(); i++ ){ JSONObject obj = array.getJSONObject(i); } } catch (Exception e) { e.printStackTrace(); }
调用 人员漏巡统计 接口示例
JQuery接口调用示例:
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascript" language="javascript"> $.ajax({ type: "POST", url: "http:192.168.1.118:6666/LAndroid/LCLPolling.ashx", data: "method=GetEmployeesAlarmStat&departId=725&dateType=currMonth", cache: false, async: false, dataType: "text", success: function (data) { document.write(data); }, error: function () { alert("error"); } }); </script>
时间查询接口参数设计
datetype | ||
curryear | 本年 | |
currmonth | 本月 | |
quarter | ||
yearindex代表是那一年,默认当前年度 | ||
quarterindex代表第几季度,默认全部 | ||
year | ||
yearindex代表是那一年,默认当前年度 | ||
month | ||
yearindex代表是那一年,默认当前年度 | ||
monthIndex代表那月,默认全部 | ||
date | ||
startdate开始时间,时间格式:yyyy-MM-dd HH:mm:ss | ||
enddate结束时间 |
相关文章推荐
- 怎样设计合适的接口-Java基础-Java-编程开发
- NandFLASH和NorFLASH接口设计和驱动开发 (转)
- iOS开发UI篇—自定义瀑布流控件(接口设计)
- 设计和开发一个接口
- 开发日记:接口开发设计
- 探秘用户接口的设计与开发
- 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例
- iOS开发UI篇—自定义瀑布流控件(接口设计)
- MMORPG大型游戏设计与开发(服务器 AI 基础接口)
- HBase应用开发回顾与总结系列之四:HBase配置管理类接口设计
- 关于软件开发和模块接口设计之一些思考
- 嵌入式系统用户接口设计之裸机界面开发(三)
- 模块化设计,面向接口开发。不断重构设计和代码,一个大幅提高开发效率的好方法:不断重构既有代码和设计,为复用准备。同时也是优化。
- android NDK开发——JNI接口设计
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [5] 版本设计分析及数据表设计
- 也来谈谈软件中分层设计与面向接口开发的意义
- LED显示屏二次开发接口的设计方案
- 嵌入式系统用户接口设计之裸机界面开发(一)
- RESTful设计原则和样例(开发前后台接口)
- 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例