Atitit 通用接口的设计与实现attilax 总结

Atitit 修改密码的功能流程设计 attilax总结 Atitit 修改密码的功能流程设计 attilax总结   1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. AgtSrv .java2   1.1. 注意点 Req参数需要根据数据库转义,防止sql注入 要输入原密码验证,防止CSRF注入 会话管理防止uid篡改。。建议ui 阅读详情

Atitit 通用接口的设计与实现attilax 总结

 

1. 现存的情况与预计目标 1

1.1. 实现零配置零注解 1

1.2. 4gl dsl sql sp接口 优先于3gl接口 1

1.3. 异常模型 代替返回值模型 1

1.4. 接口返回数据类型 指定 2

1.5. 返回结果  多种序列化格式 2

1.6. 异常传递模型 代替返回值模式 2

2. 通用接口原理与概念 2

2.1. 参照 Autoit  Autohotkey pinvoke jna的模式 2

2.2. Ajax+ Jsbridge 3

2.3. Web rest版数据库接口, Rest+jdbc+mybatis+dbutil 3

3. 三大接口 3

3.1. 通用版全功能接口http param模式  范例  可以运用于任何场合) 3

3.2. 通用版数据操作sql接口 (快速开发接口,适用与内部人员操作模块) 3

3.3. 通用版数据sp存储过程调用接口 (快速开发接口,适用于任何场合) 4

4. 后记 5

4.1. 核心代码 5

4.2. 未来的展望 dsl 模式 6

4.3. 未来的展望 dsl第二发展,支持表达式方法链 7

 

1. 现存的情况与预计目标

1.1. 实现零配置零注解

增加接口通用度。,每增加一个子接口,无需做任何的配置和注解

 

1.2. 4gl dsl sql sp接口 优先于3gl接口

其次对于数据库操作,3gl接口比较繁琐 ,增加了4gl dsl sql sp接口

 

1.3. 异常模型 代替返回值模型

其次,接口的返回值模型稍有繁琐。。可以使用异常模型代替

 

 

1.4. 接口返回数据类型 指定

返回类型类型就是str int等,支持复杂格式map list,以及对象。

 

1.5. 返回结果  多种序列化格式

返回序列化格式,即是结果使用什么样的序列化返回结果。。支持json ,预计还要支持xml yaml

 

1.6. 异常传递模型 代替返回值模式

异常拥有比返回值更好的处理模式。

异常序列化为指定的序列化格式返回,传递给调用端。。

2. 通用接口原理与概念

 直接指明要调用的类与方法名。后台通过反射的模式调用。。

类似 pinvoke jna 模式

2.1. 参照 Autoit  Autohotkey pinvoke jna的模式 

DllCall ( "dll", "返回值类型", "函数名称" [, 类型1, 参数1[, 类型n, 参数n]] )

AutoIt中的参数类型与Win32 API中的参数类型不完全相同,这点要注意。

Autohotkey

Result := DllCall("[DllFile/]Function" [, Type1, Arg1, Type2, Arg2, "Cdecl ReturnType"])

2.2. Ajax+ Jsbridge

2.3. Web rest版数据库接口, Rest+jdbc+mybatis+dbutil 

3. 三大接口

3.1. 通用版全功能接口http param模式  范例  可以运用于任何场合)

 

http://localhost:8080/AjaxJsbridge_HttpparamMode_servlet?m=com.attilax.rest.Class4test.m1&p1=123

 

 

createmode参数:   类的创建模式 默认为动态new创建模式

。静态类的方法调用 static

动态类,默认值,或者使用new

m:或者method 指明要调用的方法,全类名加方法名,比如com.attilax.rest.Class4test.m1

retType:返回数据类型int str map list obj

retFmt:返回数据序列化格式,一般为json,也可以为none,xml,默认为json

P1_type :第一个参数类型 有str int 等,默认为str

P1:第一个参数

P2_type:第二个参数类型

P2:第二个参数

iocFacioc工厂:支持spring guice new 工厂模式,默认为com.attilax.rest.JavaNewCreatorFac

morennew 工厂模式为 com.attilax.rest.JavaNewCreatorFac

 

特点::

全功能接口。

开发效率不是最高

3.2. 通用版数据操作sql接口 (快速开发接口,适用与内部人员操作模块)

http://localhost:8080/AjaxJsbridge_HttpparamMode_servlet?m=com.attilax.db.DbServiceV4qb9.executeQuery&p1=select+*+from+ecs_users+limit+10&iocFac=com.attilax.ioc.Ioc4other

 

注意:此数据接口是为快速开发而设置的,直接使用sql dsl存取数据,方便快捷。适用于后端管理,以及内部管理系统模块,适用于用户特定以及内部用户的模块。不适用于面向广大不特定用户的模块。。

 

面向广大不特定用户的模块需要隐藏sql,传递sql语句id即可,具体的sql语句应该存储在存储过程,代码或者配置文件里面 。。需要使用存储过程接口或其他接口即可

 

特点::

 开发效率貌似最高

  非全功能接口,只针对数据操作接口。其次,不适用于面向公众人员使用的模块。

 

3.3.  通用版数据sp存储过程调用接口 (快速开发接口,适用于任何场合)

调用存储过程mysql,即是使用特定sql语句,call 调用存储过程即可,比如call `sp_查询用户`('mer')。。

 

 

 

http://localhost:8080/AjaxJsbridge_HttpparamMode_servlet?m=com.attilax.db.DbServiceV4qb9.executeQuery&p1=call+%60sp_%E6%9F%A5%E8%AF%A2%E7%94%A8%E6%88%B7%60%28%27mer%27%29&iocFac=com.attilax.ioc.Ioc4other

 

即是p1参数为 call `sp_查询用户`('mer')。。  ,注意url参数的urlencode编码

 

特点::

 开发效率较高

 非全功能接口,只针对数据操作接口。


4. 后记

 

4.1. 核心代码

 

@Override

public void service(ServletRequest req, ServletResponse response) {

try {

HttpServletRequest req2 = (HttpServletRequest) req;

Global.req.set(req2);

 

String iocx =get_iocFac( req.getParameter("iocFac"));

String class_meth_full = (getMeth(req));

String cls =refx.getClassName(class_meth_full);

String meth_name=refx.getMethodName(class_meth_full);

 

Class c = Class.forName(cls);

 

List<Object> params = Lists.newArrayList();

for (int i = 1; i < 7; i++) {

String pname = "p" + i;

if (req.getParameter(pname) == null)

continue;

 

String p = req.getParameter(pname);

String ptype = getPtype(req, pname);

Object p_obj=getP(p,ptype);

params.add(p_obj);

 

}

Object[] p_a = params.toArray();

String createmode =req.getParameter("createmode");

Object rzt;

if(isStaticMode(createmode))

{

rzt = MethodUtils.invokeStaticMethod(c, meth_name, p_a);

}

else//def is new

{

Object cls_obj = com.attilax.reflect.MethodUtils.invokeStaticMethod(iocx, "getBean", c);

  rzt = MethodUtils.invokeMethod(cls_obj, meth_name, p_a);

}

System.out.println(rzt);

// Object r = new DslParser().parseV3(req2.getParameter("dsl"));

if (req.getParameter("retFmt") != null) {

if (req.getParameter("retFmt").equals("json"))

response.getWriter().println(AtiJson.toJson(rzt)); // �벻Ҫ�޸Ļ�ɾ��

} else

response.getWriter().println(rzt.toString()); // �벻Ҫ�޸Ļ�ɾ��

} catch (Exception e) {

logger.error("--err", e);

logger.error("--err2", AtiJson.toJson(e));

filex.save_safe(core.getTrace(e), "c:\\0rechglog\\" + filex.getUUidName() + ".log");

ExUtil.throwExV2(e);

}

 

}

 

 

4.2. 未来的展望 dsl 模式

直接支持java表达式,http://xxxxxx/api?dsl=new com.xxx.userservice().reg()

 

4.3. 未来的展望 dsl第二发展,支持表达式方法链

 

 

 

 

 

 

 

 

 

作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher

捕鸟王"Bird Catcher  kok  虔诚者Pious 宗教信仰捍卫者 Defender Of the Faith. 卡拉卡拉红斗篷 Caracalla red cloak 万兽之王

简称:: Emir Attilax Akbar 埃米尔 阿提拉克斯 阿克巴

全名::Emir Attilax Akbar bin Mahmud bin  attila bin Solomon bin adam Al Rapanui 埃米尔 阿提拉克斯 阿克巴 本 马哈茂德 本 阿提拉 本 所罗门 本亚当  阿尔 拉帕努伊

常用名:艾提拉(艾龙),  EMAIL:1466519819@qq.com

 

 

头衔:uke总部o2o负责人,全球网格化项目创始人,

uke交友协会会长  uke捕猎协会会长 Emir Uke部落首席大酋长,

 

uke宗教与文化融合事务部部长, uke宗教改革委员会副主席

uke制度与重大会议委员会委员长,uke保安部首席大队长,uke制度检查委员会副会长,

 

uke 首席cto   软件部门总监 技术部副总监  研发部门总监主管  产品部副经理 项目部副经理   uke科技研究院院长uke软件培训大师

 

uke波利尼西亚区大区连锁负责人 汤加王国区域负责人 uke克尔格伦群岛区连锁负责人,莱恩群岛区连锁负责人,uke布维岛和南乔治亚和南桑威奇群岛大区连锁负责人

 Uke软件标准化协会理事长理事长 Uke 数据库与存储标准化协会副会长

 

uke终身教育学校副校长   Uke医院 与医学院方面的创始人

 uec学院校长, uecip图像处理机器视觉专业系主任   uke文档检索专业系主任

Uke图像处理与机器视觉学院首席院长

Uke 户外运动协会理事长  度假村首席大村长   uke出版社编辑总编

 

转载请注明来源:attilax的专栏  ?http://blog.csdn.net/attilax

--Atiend  v8

 

通用接口开放平台设计实现——(2)API服务总体设计 API服务是通用接口平台的主体部分,对外暴露Restful风格的数据接口,其他应用系统通过调用API服务,一方面,可以查询权限范围内的物流数据,另一方面,可以将自身系统产生的数据推送至物流系统。 API服务的技术实现相对消息服务而言,难度较低,注意事项也比较少,这里先放一个整体设计,细节后面在消息服务后面再展开介绍。 总体设计 API服务分为服务技术框架和具体业务功能接口两部分,技术框架部分负责统一调度、数据验证、身份认证、安全控制、日志记录等职责,具体业务功能接口负责实际的业务接口功能处理,总体处理流程如 阅读详情

相关推荐

通用接口开放平台设计实现——(1)整体介绍

首先简单聊下背景,大概是几年前,工作中遇到这么一个复杂的应用场景,大型企业中的物流系统,需要跟众多的内外部系统交互,对接的系统达到十几个,接口数量在50个左右,并且后续还会大量增加新的对接方,并且很多对接方是类似的,例如跟汽运物流厂商的运输管理系统TMS,进行运输委托、运力反馈、运费结算、签收回传等交互。API服务:物流接口平台对外提供统一的数据接口服务,其他应用系统通过调用API服务,一方面,可以查询权限范围内的物流数据,另一方面,可以将自身系统产生的数据推送至物流系统。

学海无涯,行者无疆 7978

11.通用接口用例设计

(1)通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。 (2)参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。 (3)接口安全:绕过验证,比如说购买了一个商品,它的价格是300元,那我在提交订单时候,我

Melody_tester 501

接口开发文档-设计通用化

开发文档-设计通用化,通用表字段,页面实现通用查询

Java后端通用接口设计

为了将接口设计得更合理,我们需要考虑如下两个原则:对外隐藏内部实现。即服务A调用服务B,如果服务B异常,但是我们不要直接把服务B的状态码、错误描述直接暴露给用户;设计接口结构时,明确每个字段的含义,以及客户端的处理方式。接口设计逻辑:如果出现非 200 的 HTTP 响应状态码,就代表请求没有到服务,可能是网络出问题、网络超时,或者网络配置的问题。这时,肯定无法拿到服务端的响应体,客户端可以给予友好提示,比如让用户重试,不需要继续解析响应结构体。

weixin_54828627的博客 3131

java通用接口设计

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnNJava 通用接口设计指南 在软件开发中,接口设计是至关重要的一部分。良好的接口设计可以提高代码的可维护性、可扩展性和可重用性。本文将指导你如何在 Java 中实现通用接口设计,并逐步解析...

weixin_42596246的博客 231

atitit。html css框架Bootstrap  Foundation的比较不同 attilax大总结

atitit。html css框架Bootstrap  Foundation的比较不同 attilax大总结   1. Bootstrap  Foundation的比较不同1 2. Bootstrap 教程2 2.1. Bootstrap 简介2 2.2. Bootstrap CSS2 2.3. Bootstrap 布局组件2 2.4. Bootstrap 插件3 2.5. B

attilax的专栏 1513

atitit.loading的设计实现控件选型attilax 总结

atitit.loading的设计实现控件选型attilax 总结   1. Percentage Loader(推荐) 1 1.1. 起始百分比::调整  progress 1 2. CSS3 Loading Spinners Without Images 2 2.1.1. CSS Transforms 2 2.1.2. Animation 3 3. Ajax Style Loa

attilax的专栏 1172

Atitit  ocr识别原理 概论 attilax总结

Atitit  ocr识别原理 概论 attilax总结   1.1. Ocr的过程流程1 1.2. OCR不同技术细分略有不同,但大概原理是一样的。 即主要技术过程是:二值化(又叫归一化)--------行定位----------字符切分----------字库模型比对(取置信度较高字)---------输出2 1.3. Tesseract 图片布局分析 字符分割和识别2  

attilax的专栏 1680

atitit。流程图的设计制作 attilax 总结

atitit。流程图的设计制作 attilax 总结     1. 流程图的规范1 2. 绘图语言2 2.1. atitit.CSDN-markdown编辑器2 2.2. js-sequence-diagrams 2 3. 成员软件 axure  (10M)2 4. visio3 5. 参考3 5.1.1. paip.流程图的图形化编程及源码生成时序图 - attilax

attilax的专栏 989

Atitit.attilax的 case list 项目经验 案例列表

Atitit.attilax的 case list 项目经验 案例列表     1. Atian inputmethod 输入法3 2. Ati desktop engine桌面引擎3 3. Acc资金账户系统4 4. Attrib manager  属性管理器4 5. Auth sys权限系统4 6. Ad filter广告过滤系统 php 实现5 7. Big data Fol

attilax的专栏 1570

Atitit..状态机词法分析  通用分词器 分词引擎的设计实现 attilax总结

Atitit..状态机词法分析  通用分词器 分词引擎的设计实现 attilax总结     1. 状态机 理论参考1 2. 词法分析理论1 3. 词法分析实例2 4. ---code fsm 状态机通用实现2 4.1. Context2 4.2. public abstract  class State {3 4.3. public class Token {4 4.4.

attilax的专栏 990

atitit.系统架构图 的设计 工具 attilax总结

atitit.系统架构图 的设计 工具 attilax总结   1. 架构图的4个版式(标准,(左右)悬挂1 2. 架构图的层次结构(下属,同事,助手)1 3. wps ppt1 4. 使用EDraw画系统架构图2 5. 系统架构常用软件: 1. MindManager 画思维导图 2. Microsoft Office Visio 内有uml建模工具, 上图也可以用此软件画出来 3

attilax的专栏 2298

Atitit.互联网 软件编程 数据库方面 架构 大牛 牛人 attilax总结

Atitit.互联网 软件编程 数据库方面 架构 大牛 牛人 attilax总结   Coolshell 称号。理论c++ 阮一峰:: 理论高手js高手 王银:理论高手 赵劼,网名老赵,c#高手 理论 洋名Jeffrey Zhao,花名赵姐夫,金融行业程序员,目前就职于摩根大通(香港)。多年微软MVP,InfoQ中文站兼职编辑。 Javaeye创始人Robbin   当然我在

attilax的专栏 949

ATITIT.翻译模块的设计实现 api attilax 总结

ATITIT.翻译模块的设计实现 api attilax 总结     1. 翻译原理1 2. TMX格式是国际通用格式(xml)1 2.1. 方法/步骤2 3. TRADOS2 4. ATITIT.翻译软件的实现思路2 5. 参考3       1. 翻译原理 在日常生活中英汉辞典的作用就是把中文翻译成英文或者是把英文翻译成中文,它的实现原理就是词典库里先把对应的中文...

weixin_33980459的博客 172
上一篇: Atitit 文档的格式演变attilax总结
下一篇: Atitit. 提升可读性推荐标准规范解决方案 关于编程语言的v5 docx
attilax
博客等级 码龄19年 873粉丝 3263原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值