背景介绍
首先,这仅基于我实习的经历来给大家提供参考,大家有疑问可以评论区沟通,我也会尽力解答。我的项目背景基于两个不同系统之间的数据同步,涉及到的接口形式为JSON和XML形式两种。
接口开发流程
常量类的位置
- 众所周知,常量类中放着接口的链接地址。
- 你需要定义一个常量来接收你的接口地址。(本地写死,读取配置)。
(1)读取Apollo配置文件的链接
/**
* 获取HR接口地址
*/
public static String DHR_URL;
@Value(value = "${interface.hr-url}")
public void sethrUrl(String hrUrl) {
HR_URL = hrUrl;
}
发送HTTP请求
- 有了地址就是发送HTTP请求去调用接口获取数据了。
(1) 发送请求前,需要封装好请求头和请求体参数。
//请求体参数设置
JSONObject requestParams= new JSONObject();
jsonObject.put("usercode", "123");
jsonObject.put("username", "123");
jsonObject.put("pwd", "122");
//请求头参数设置
JSONObject head= new JSONObject();
jsonObject.put("Content-Type", "application/json");
(2) 发送HTTP请求可以用封装好的工具或者jdk自带的发送请求获得返回数据。
try (CloseableHttpResponse response = getResponse(url, requestParams.toJSONString(), header, POST, "UTF-8", "BODY")) {
if (response == null || response.getEntity() == null)
throw new IllegalStateException(url + " request failed");
if (StringUtils.isNotBlank(charset))
charset = "utf-8";
String result = EntityUtils.toString(response.getEntity(), charset);
// 关闭链接
EntityUtils.consume(response.getEntity());
response.close();
return result;
}
解析获取的数据
- 注意需要判断是否拿到数据,不要出现空指针情况。
- 拿到数据之后,同步数据数据就是将数据插入或者更新到数据库中。
- 采用微服务的项目可能需要远程调用已经写好的插入删除方法。
@FeignClient(value = “你的其他服务的应用名称”, contextId = "CxfSendhrServiceRestful")
public interface ISaafCxfDhrRestful {
@RequestMapping(value = "远程服务的接口路径", method = RequestMethod.POST)
void doSendhrXml(@RequestBody IntfhrPublicBO dhrPublicBO) throws IOException;
定时任务
- 定时调度模块中写好定时任务,每多久调度一次接口同步一次数据。