开发日记:接口开发设计

接口开发使用规则

业务术语:


请求:通过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. 如果响应时间过长直接导致数据返回失败,提示接收端重新提交。

接口编码设计:


使用抽象依赖倒置思维进行接口设计

· 定义一个通用抽象类

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代表那月,默认1月

 
date

 
   
startdate开始时间,时间格式:yyyy-MM-dd HH:mm:ss

   
enddate结束时间

时间: 2024-08-14 03:57:53

开发日记:接口开发设计的相关文章

java web开发(二) 接口开发

java web开发(一) 环境搭建讲解了如何搭建基础项目,如果你还没了解,可以先去看看!今天我们就来看看接口的开发,打算使用比较古老的或者说比较原始方法实现的接口. 一.数据库设计. 我打算做一个简单的学生信息管理系统,数据库名为students_manage,并且先设计一张学生表,表名为student. 1.打开Sqlyong工具,如果还没创建连接,可以点击新建,输入名称,点击确定即可, 2.然后在保存的连接中选择,刚刚新建的连接,只需要在密码输入框中输入,安装数据库时的设置的密码,点击连接

接口测试平台开发之接口开发(用例集合)

接下来开发用例集合接口,在星瀚项目中点击用例集合,一直显示玩命加载中,检查看这个接口http://127.0.0.1:8000/api/case_collection一直报404,证明这个接口没有开发,首先配一下url,在urls.py里新增path('case_collection', views.CaseCollectionView.as_view()),然后在forms.py里新增如下图: 用例集合和用例管理接口基本一样,需要增删改查,因此也要继承NbView,CaseCollection

LayIM.AspNetCore Middleware 开发日记(五)Init接口实现细节

前言 "一旦开始了就要坚持下去".为什么本文的第一句话是这么一句话呢,因为我经常就是开头轰轰烈烈,结果越来越枯燥,就不想做下去了.但是版图就放弃又那么不甘心,继续加油吧. 吐槽完毕,进入正题.在上一篇中我们的主角LayIM已经登场了.而且界面已经实现,那么有些小伙伴就有疑惑了,详细流程是什么样的,今天我就介绍一个东西,那就是 /layim/init 接口的实现细节 另外,项目已经升级至 .NET CORE 2.1 ,最新代码在 dev-netcore2.1 分支上 需求 需求是什么?需

控件的开发接口的设计原理

for (var i = 0; i < _uiList.length; i++) { groot.vms[_uiList[i]].uivalue = value; groot.vms[_uiList[i]].uivalueRender(); } 当改变父vm的属性值的时候的值的时候 程序是通过 控件的uivalue 来更新控件的值的 所有每个控件必须有uivalue属性 控件的开发接口的设计原理

asp.net开源流程引擎API开发调用接口大全-工作流引擎设计

关键词: 工作流引擎 BPM系统 接口调用 工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流 一.程序调用开发接口二.   接口说明 所谓的驰骋工作流引擎的接口,在BP.WF.Dev2Interface.*上面的静态方法,前台页面通过这些静态方法通过页面于操作者提供交互数据功能交互.    Port_* 开头的方法都是组织结构相关的操作,比如:登录.登出.发送消息.    DB_*的都是提供数据列表的接口,比如:发起列表.待办列表.在途列表.完成列表等.   

车联网开发日记4

今天是车联网开发的第四天,继续昨天的进展,对项目的主要功能方面的代码进行学习和整理,今天主要是百度地图的显示和定位,和android 服务端的实现.而且我们规定了编码项目的api和android的版本. 百度地图的显示和定位都可以实现,但是由于电脑安卓虚拟机无法连接网路,所以无法在安卓虚拟机中实现,但是我们在真机上验证,可以实现(需要连接网路). 地图API的应用查看(车联网开发日记2) android服务端的搭建主要有两种方法:xml格式的webservice,json格式的webservic

关于《Web接口开发与自动化测试--基于Python语言》

关于封面logo 首先,你会被书封上面logo吸引,这么炫酷?双蛇杖?嗯,这是Requests的新logo. 旧的logo是一只乌龟. 新logo是双蛇杖: 看到新logo我首先想到的是 火爆全网页游 “大天使之剑”,直到前两天一位网友告诉我这是双蛇杖,然后,我百度了一下双蛇杖的神话故事.然后,找到了Requests库开发者的一次提交,有人说喜欢旧logo,然后,得到的答复是:“This represents the peace Requests brings between the serve

《连载 | 物联网框架ServerSuperIO教程》- 13.自定义视图显示接口开发,满足不同的显示需求

1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架ServerSuperIO教程>2.服务实例的配置参数说明 <连载 | 物联网框架ServerSuperIO教程>- 3.设备驱动介绍 <连载 | 物联网框架ServerSuperIO教程>-4.如开发一套设备驱动,同时支持串口和网络通讯. <连载 | 物联网框架ServerSupe

移动互联网(一)短信和彩信等接口开发封装

在这个项目中涉及到了短信和彩信等功能,这个算是一个项目重要组成部分,曾经想过这个功能怎么开发,例如在我们永和系统中有很多订单,可以给用户办理会员卡等业务如何让用户及时知道自己卡里的消费情况?如何让用户心中存在安全感,试想想在你的银行卡每次消费或者转入.转出每一笔款的时候都有短信提示,你是不是无意中增加了一份安全感呢? 大家在想想目前的各类门户网站,以及我们常用的CSDN等论坛都提供有短信登录.以及短信验证码.短信注册等等同短信沾边的业务内容,所有的这些都是一个思想提高系统灵活性.易用性.安全性,