apijson新增远程函数提示 不允许调用远程函数

项目场景:

项目中使用到apijson的远程函数

问题描述

使用中发现添加一个远程函数之后无法调用,这个函数之前的正常

原因分析:

经过排查发现使用的apijson framework中有一段在启动项目时测试远程函数逻辑:
在APIJSONFunctionParser中有这样一段

  					FUNCTION_MAP.put(name, item);
                    String[] methods = StringUtil.split(item.getString("methods"));
                    JSONObject r = (new APIJSONParser(methods != null && methods.length > 0 ? RequestMethod.valueOf(methods[0]) : RequestMethod.GET, false)).setTag(item.getString("tag")).setVersion(item.getIntValue("version")).parseResponse(demo);
                    if (!JSONResponse.isSuccess(r)) {
                        onServerError(JSONResponse.getMsg(r), shutdownWhenServerError);
                    }

如果是测试失败就不再加载以后的方法,项目中一个远程函数使用到了获取当前登陆人的逻辑,刚启动没有登录人,所以获取当前登录人一定会报错,导致下面的方法都没有加载

解决方案:

查清原因解决方案就有多种,
1、简单方案:直接把启动会报错的逻辑try catch起来
2、正常方案: 在function表中增加一个字段来标识启动测试
例如:

if(item.get("test_flag")!=null&&IsOrNot.Not.getValue()==item.getIntValue("test_flag")){
                        continue;
                    }

版权声明:本文为qietingfengsong原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。