目录

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个项目组人做了三次重复的事情。