简述:一般我们调用外部系统 比如使用httpclilent.post(url,param);
然后我们会在各种地方使用httpclilent.post(url1,param1)、httpclilent.post(url2,param2);
比较好的办法如下,直接上代码。下面是一个简单的基本封装模型。
/**
* 请求参数基类
*/
public abstract class BaseReq<resp> {
protected String reqUrl;
public Type getc(){
ParameterizedType parameterizedType = (ParameterizedType) this.getClass().getGenericSuperclass();
return parameterizedType.getActualTypeArguments()[0];
}
}
/**
* 请求参数
*/
public class Req extends BaseReq<Resp>{
{
this.reqUrl = "127.0.0.1:8080/test";
}
String reqParam1;
String reqParam2;
}
/**
* 返回参数
*/
public class Resp {
private String name;
private Integer age;
///...get set 方法
}
public class ApiExecutor {
public <resp> resp excute(BaseReq<resp> req){
//外部接口请求过程封装
String result = "{}";
//可以通过反射获取请求参数Req 的 reqParam1, reqParam2;
//通过 result = HttpClientUtils.post(req.reqUrl, reqParam1, reqParam2);
//不一定是JOSN, 有可能是通过其他方式生成对应的返回值,比如序列化与反序列发
return JSON.parseObject(result , req.getc());
}
}
测试代码
public static void main(String[] args) {
//测试代码
ApiExecutor executor = new ApiExecutor ();
Req req = new Req();
Resp resp= executor.excute(req);
}
总的来说使用泛型和反射 每一个接口 封装一个 请求参数类 和 返回参数类 即可。