目录
1、使用场景
2、基本请求jar及对接系统关系图
3、总结及成果展现
1、使用场景
最近公司要求把各个业务系统都对接到统一的用户中心,用户之中使用其他语言PHP进行开发实现的。提供一套REST API相关接口实现。最后要求对接各个业务单元依据提供的接口API进行与用户中心对接。首先我是考虑我们业务单元涉及的项目之中众多,目前大概有10多个项目需要对接,如果每个项目对接都使用相同代码;会导致相同代码在多个系统之间Copy N次。于是本人根据要求自己基于用户中心提供的Rest API基础做了相关基本请求接口的封装,以及基本的请求参数要求sigin(签名)认证,使用RestTemplate模板进行统一封装的接口调用。统一分封装到了一个usercenter-restapi.jar
2、基本请求jar及对接系统关系图
其中针对具体的项目之中涉及对接业务部分,然后根据实际情况进行针对业务部分调用接口部分二层封装。
使用UserCenterOperatorService接口封装。
比较关键的实现依据SpringBoot的 Environment(环境)外部配置读取配置参数,具体如下图所示的核心代码
@Autowired
private Environment env;
private String[] actProfile =null;
/**
* 根据运行环境获得不同环境下载用户中心访问域名
* @return
*/
private String[] getApiBaseUrlAndHeadAppId() {
actProfile = env.getActiveProfiles();
ReadPropertiesFileInfo readPropertiesFileInfo=new ReadPropertiesFileInfo();
Properties propertiesEnv=null;
try {
propertiesEnv=readPropertiesFileInfo.readOuterJarPropertiesFileInfo("/application-"+actProfile[0]+".properties");
} catch (IOException e) {
logger.error("读取外部配置运行环境错误!");
}
String visitDomainUrl = propertiesEnv.getProperty(UserCenterRestApiProperties.PUBLIC_REST_URL+"visitDomainUrl");
String commonApiPath = userCenterRestApiProperties.getCommonApiPath();
visitDomainUrl+=commonApiPath;
String appId = propertiesEnv.getProperty(UserCenterRestApiProperties.PUBLIC_REST_URL+"appid");
String[] piBaseUrlAndHeadAppId={visitDomainUrl,appId};
return piBaseUrlAndHeadAppId;
}
3、总结及成果展现
通过上面的设计实现,真正达到能够在迁移不同项目的时候;做到以下几点
- 直接基本外部对接参数根据不同环境直接读取
- 调用用户中心部分的接口api jar化,直接引入pom文件即可
- 与业务结合部分实现二次封装,达到各个项目之间重复引用
个人感觉因为我们公司有好几个不同业务部门;如果是上面技术leader,我会要求技术中心只需要让一个人来封装一个统一接口调用实现。目前据我所知至少3个项目组人做了三次重复的事情。