http应用
指通过http来与与外部web应用进行交互的app应用,标准http应用的基类是AbstractHttpApp它为工作流提供了基础的HTTP任务声明,同时提供了http应用的auth鉴权、responseCheck结果检测的标准入口。
public abstract class AbstractHttpApp extends AbstractApp {
@Getter
@Setter
protected String serverUrl = ""; // 应用基础路径
// 声明默认任务
@Info(name = "默认HTTP调用")
public HttpTask defaultTask() {
HttpTask httpTask = new HttpTask();
initIntercept(httpTask);
httpTask.setMethod("POST");// 默认
return httpTask;
}
// 结果验证,需子类实现
protected void responseCheck(HttpTask task) {
}
// 鉴权操作,需子类实现
protected void auth(HttpTask task) {
}
}serverUrl应用基础路径(非必填),若用户未填写完整url路径 将自动补上该路径defaultTask用于声明该应用默认的HTTP任务,添加了initIntercept拦截器用于将鉴权与结果验证逻辑组织进去。responseCheck结果检测标准入口,需子类实现auth鉴权标准入口,需子类实现
注意:AbstractHttpApp 是一个抽象类不能直接配置,只能配置其实现类。
声明默认HTTP任务
所有AbstractHttpApp实现都支持默认http任务声明defaultTask ,声明后的HTTP任务增加以下特性:
- 设置http请求方法为
POST - 添加基础授权处理,用户无需在配置授权参数
- 对返回结果的异常判定处理。
示例:
假设已配置微信应用实例myWeixin
//1.创建自定义菜单
task1= myWeixin {
url="https://api.weixin.qq.com/cgi-bin/menu/create"
json """"
{
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
}]
}
"""
}
//2.查询自定义菜单
task2= myWeixin "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info"task1任务基于默认方法声明,设置url属性同时通过json方法指定了请求体。task2任务基于默认方法的快捷方式声明,指定了url,另外所有快捷声明的HTTP任务都以GET方法来请求。