#实践案例#Python插件变通实现自定义WebAPI接口查询报表
一、业务背景
小伙伴们实践了Python插件开发后,觉得很方便,很多小伙伴就问我,Python能不能做自定义WebAPI接口?
大家知道,Python插件是在BOS平台进行注册使用的,而自定义WebAPI接口本质上还是继承特殊的基类AbstractWebApiBusinessService来开发插件发布到应用服务器,进行调用的,但目前是无法通过Python来开发这种插件,所以Python插件是不能用这种方式来开发自定义WebAPI接口的!
C#自定义WebAPI接口可以参考:
标准的WebAPI接口对应单据的各种操作已经很全面了,但是有很多集成需求,是需要读取系统已有报表的数据,版本新一点的系统已经提供了平台公共报表查询接口,但是这个接口有的报表可能不支持,或者用起来不是那么顺畅。
于是,就会想到开发自定义WebAPI接口来查询报表数据,前面讲了,自定义接口实质还是基于插件开发的,那么首先可以参考的思路就是:插件中如何获取报表数据?有下面一些案例可以参考:
以上案例已经可以通过C#实现自定义WebAPI接口来实现查询报表数据,但大部分情况可能都是查询某一个报表的,如果要查询多个报表,那是不是得开发多个接口呢?
那么,就很想实现一个通用的报表查询接口?或者用Python实现?就可以快速的进行迭代修改,以满足对各种报表的需求
结合以上思考, 本次案例基于Python插件,变通实现自定义WebAPI接口查询报表数据!
二、解决方案
如何实现通用方法获取报表数据?
有了插件获取报表数据的方法案例,插件获取报表数据当然不是问题,经过验证,Python插件也能实现。
经过分析就发现,报表查询其实是相同的模式,都是:过滤参数->执行报表取数逻辑->返回查询结果(DataTable)
差异点主要在于过滤参数的不同。
Python插件如何转换成接口调用?
对于WebAPI接口调用,要实现的目标是:
接口能传递自定义参数->Python插件解析干预->返回自定义数据给接口调用方
由于不能自定义接口服务插件,那么就只能往标准接口上面去靠,而目前标准WebAPI接口能传自定义参数的接口就 只有单据保存接口和单据下推接口。所以Python插件干预接口参数,就要基于这2种操作触发来实现。
而要实现自定义的返回数据,很简单,可以通过抛异常的方式返回出来,然后接口调用方解析异常信息。以上两种操作都是可以支持的。但是,下推接口,要建立在单据转换的基础上,显然不是太方便,所以最佳的选择就是保存接口了。
对于保存接口,还有一种方式可以返回数据给接口,那就是增加操作结果信息。
√ 用操作服务插件刚好可以满足以上条件:Python能实现+保存接口能触发+增加操作结果信息
具体实现思路?
①开发一个查询方案基础资料,来配置接口请求JSON参数与过滤参数的对应关系,不同报表配置不同的方案。
②用Python开发插件,可以基于此查询方案,可以获取报表数据。
③将获取报表数据的功能,通过Python服务插件做注册到保存操作下面,并通过增加结果信息的方式返回。
注意:I. WebAPI调用该方案保存接口,会自动取消保存,不会真正保存数据,只是借用了这个接口而已,所以都会返回保存失败!只要返回的参数结构是正确的,那就说明调用是成功的。
II.由于是调用方案的保存接口,要考虑并发问题,所以实际不会执行保存动作,Python操作服务插件中直接取消操作,并且不能启用网控管理。
④可查看该方案的接口调用指南,并生成当前方案WebAPI请求参数的测试JSON数据,
复制到WebAPI在线测试平台可以直接验证效果。
外部系统就可以通过此参数结构,调用该方案的保存接口来获取数据啦!
三、实现效果演示
四、总结几点
经过验证,有些标准报表需要先建立一个过滤方案,然后基于过滤方案再修改过滤字段的值,来实现查询更佳。
基于此案例,可直接实现通用的报表查询接口,复用性很高,全部用Python插件实现,可以快速迭代优化。
有了这个案例开发的经验,用Python插件变通实现自定义WebAPI接口就不是问题了。
案例中用Python插件实现了获取报表数据,在其他功能插件或者报表开发需获取报表数据,也可复用这部分代码。
==============================正文结束=====================================
感谢大家的关注与评阅,希望能为大家的实际问题带来参考和启发。
此方案全部用Python插件实现,如果需要此方案的二开补丁或者源码,可私信作者!
学习了。
大佬的想法总是更不上
不仅技术高超,周总的讲解方式还特别接地气,
让人一看就懂,一学就会。
呃,我先把牛吹了再说。
实际上,我还没有试,先瞟了一眼,觉得是好东西,先收收藏起来,
等有项目了,再开始学习,现炒现卖,相信也来得及。
大佬
V5
Python插件被周老师玩出花了,奇思妙想,思路清晰,稳
大佬
让人眼前一亮的思路
#实践案例#Python插件变通实现自定义WebAPI接口查询报表
本文2024-09-16 17:11:18发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-14097.html