Java项目开发中第三方系统整合的技巧总结,如果有人早点告诉我就好了!!

0 前言

大型项目往往不是一家企业独立就能完成,而做好第三方系统整合就显得尤为关键.但这个过程往往不是一帆风顺的,经常会遇到各种各样的问题.有缘能看到这篇博客的话,希望下面的内容可以帮到你.

1 常用请求方式

值得注意的是,以下代码主要适用于SpringCloud框架

1.1 Feign对接第三方系统

@FeignClient(name = "Client", url = "${xx.xx.url:http://192.168.30.10:443}",
        fallback = Fallback.class, decode404 = true)
public interface Client {
    @PostMapping(value = "/sdk_service/rest/videoanalysis/peoplefaces/v1.5", consumes =
            {MediaType.APPLICATION_XML_VALUE}, produces = MediaType.APPLICATION_XML_VALUE)
    String searchFromVpass(@RequestBody String faceSearchRequestDto);
}    

@Slf4j
public class Fallback implements Client {
    @Override
    public String searchFromVpass(String faceSearchRequestDto) {
        log.info("进入熔断器");
        return "null";
    }
}

2 代码调试技巧

当你写好代码之后,很可能出现无法在本机直接调试的情况.比如说第三方系统只能通过摆渡机才能访问,而摆渡机上面往往都不会装IDE.虽然无法直接在摆渡机看到代码的运行过程,但这并不意味着无法把握代码的运行过程.

2.1 调试请求方式

  1. 前端直接请求
  2. Postman进行请求
  3. 在线接口文档请求(比如swagger)

2.2 查看响应结果

  1. Postman或在线接口文档可以直接查看响应结果:调整响应结果解析方式
  2. 前端请求通过查看日志信息来观察运行过程,命令tail -500f nohup.log,其意义为:已追加方式查看日志最后500行,即查看最近500条日志信息

2.3 有效实践

  1. 调整接口参数,采用Postman或在线文档:由于文档往往没有那么详细,所以需要通过这种方式摸索有效的入参形式
  2. 定位问题或者调整配置,往往需要查看日志信息才可以
  3. 避免重复打包,可以将关键信息写入配置文件中:好处在于,通过vi改一下配置文件就可以实现代码的另一种运行方式,而不用再本地修改代码并重新构建jar包.如果你有过用U盘拷jar包到客户环境中运行的经历,你就知道我在说什么东西,有什么意义.应该放入配置文件的信息为:第三方系统URL等
  4. 写好日志,第三系统请求参数,响应结果以及关键的判断等信息应当写入日志.让人通过观察日志便可以知道代码运行到了哪里,问题发生在哪里.入参也可以被复制到Postman进行验证等.

3 构建假数据

第三方对接过程中,对方接口往往有这样或那样的问题导致无法正常对接,然后你苦苦等第三方,而前端又苦苦等你?显然,如果你可以知道第三方系统的响应格式,那么完全可以直接新建一个springboot项目来模拟第三方接口.只需要把URL换成假数据springboot的URL就可以完成.
通过构建假数据,可以快速完成后端与前端的联调,提高开发效率.接下来说一下具体做法:

  1. 新建springboot项目
  2. controller层中的mapping保持与第三方系统一致
  3. 响应结果直接读取资源目录下的json文件或xml文件:资源文件直接复制响应结果即可
    @RestController
    @RequestMapping("/*")
    public class XmlController {
        @PostMapping(value = "/sdk_service/rest/facematch/1v1")
        public String oneToOneCompare(@RequestBody String xml) throws IOException {
            File file = ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX+ "data/xml/oneToOneCompare.xml");
            return IOUtils.toString(new FileInputStream(file), String.valueOf(StandardCharsets.UTF_8));
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值