全栈低码设计开源框架 json-script-rule 整合rpc框架

RPC使用说明

从4.0版本开始,框架开始支持rpc调用,api层以及provider层均需要引入interface包,因此开发者可以在interface层pom中引入json-script-rule,引入后可以在interface层定义一个方法,代码如下

public interface IJSRuleStartService {
    JSResult start(String body, JSRuleGlobalArgs args) throws BusinessException, JSRuleException;
}

BusinessException为开发者项目中自定义的异常,以dubbo为例provider层代码如下

@DubboService
public class JSRuleStartService implements IJSRuleStartService {

    @Autowired
    protected JSRuleService service;

    @Override
    public TestJSResult start(String body, JSRuleGlobalArgs args) throws BusinessException,JSRuleException{
        return service.start(body,args);
    }
}

TestJSResult为JSResult的子类,是自定义result模型,JSRuleService是框架内置的启动类,这里只需要调用start方法即可,api层代码如下

@RestController
public class ApiTestController {

    @DubboReference(timeout = 10000)
    private IJSRuleStartService startService;

    @PostMapping("/start")
    public JSResult start(@RequestBody JSBody<?> body){
        return startService.start(ZSRule.modelToJson(body),null);
    }

    @PostMapping("/start2")
    public Object start2(){
        return startService.start("{\n" +
                "    \"params\":{\"roles\":[\"skk\"]},\n" +
                "    \"actions\":[{\n" +
                "        \"name\":\"asddsa\",\n" +
                "        \"get\":{\n" +
                "            \"relation\":{\n" +
                "                \"classes\":[\"TestBank\"]\n" +
                "            },\n" +
                "            \"fields\":[\"id\"]\n" +
                "        }\n" +
                "    }]\n" +
                "}",null);
    }
}

startService中的参数为String类型,因此/start中JSBody<?> body对象需要通过ZSRule.modelToJson方法将其转化为String才能进行调用。此外/start2中也展示了,这里还可以直接写一个json字符串来发送请求

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容