#实践案例#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能实现+保存接口能触发+增加操作结果信息
具体实现思路?
①开发
#实践案例#Python插件变通实现自定义WebAPI接口查询报表
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



