对外请求类转换代码写法

方法一: 转换工具util

提供一个ConvertUtil类
例如:
ConvertUtil 里面包括 CreateParam 到 CreateRequest 中的转换,包括 CancleParam 到 CancelRequest 中的转换

优点:
        所有的转换方法都可以在这个类里找到。
缺点:
        1. 有接口修改就需要修改此类。
        2. 没有统一的入口修改请求和方法。

方法二: 抽象方法 + adaptor

提供一个抽象的requestManager 抽象请求方法
对外部应用的请求可以抽象为:

  • parseRequest
  • doRequest
  • parseResponse
    三个基本操作
  public <Param, Req, Resp> Result<Resp> request(Config config, Param param, Adaptor<Param, Req, Resp> adaptor){
        ApiEnum api = adaptor.getApiName();
        try{
            Req request = adaptor.buildRequest(config, param);
            if (request == null){
                log.error(ErrorEnum.PARAM_ERROR.getDesc() + ": param=" + param);
                return ResultUtils.buildErrorResult(ErrorEnum.PARAM_ERROR, "param=" + param);
            }
            IRequester<Req> sender = getRequester();
            Result<String> senderResult = sender.request(config, request, api);
            return adaptor.parseResponse(config, senderResult, param);
        } catch (Exception e) {
            log.error("execute error ", e)
            return ResultUtils.buildErrorResult(ErrorEnum.SYSTEM_ERROR, e.toString());
        }finally {
          // 记录结果到数据库
            Record2DB();
        }
    }

优点:

  1. 针对单个外部接口符合开放关闭原则,新增修改接口的请求和响应转换不在修改util类
  2. requestSender 可以由子类确定,确定是http 还是hsf
  3. 统一的记录日志,对外部的请求会有同一个日志收口
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,184评论 19赞 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 35,258评论 18赞 399
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,373评论 6赞 342
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,305评论 0赞 62
  • “没货!”是最近同事们问我货源时,我很快速地回应。说得多了,就会发现其中的问题。为什么一直没货?群里没人叫,还有人...
    麦子飞呀飞阅读 429评论 0赞 0

友情链接更多精彩内容