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 调试请求方式
- 前端直接请求
- Postman进行请求
- 在线接口文档请求(比如swagger)
2.2 查看响应结果
- Postman或在线接口文档可以直接查看响应结果:调整响应结果解析方式
- 前端请求通过查看日志信息来观察运行过程,命令
tail -500f nohup.log
,其意义为:已追加方式查看日志最后500行,即查看最近500条日志信息
2.3 有效实践
- 调整接口参数,采用Postman或在线文档:由于文档往往没有那么详细,所以需要通过这种方式摸索有效的入参形式
- 定位问题或者调整配置,往往需要查看日志信息才可以
- 避免重复打包,可以将关键信息写入配置文件中:好处在于,通过vi改一下配置文件就可以实现代码的另一种运行方式,而不用再本地修改代码并重新构建jar包.如果你有过用U盘拷jar包到客户环境中运行的经历,你就知道我在说什么东西,有什么意义.应该放入配置文件的信息为:第三方系统URL等
- 写好日志,第三系统请求参数,响应结果以及关键的判断等信息应当写入日志.让人通过观察日志便可以知道代码运行到了哪里,问题发生在哪里.入参也可以被复制到Postman进行验证等.
3 构建假数据
第三方对接过程中,对方接口往往有这样或那样的问题导致无法正常对接,然后你苦苦等第三方,而前端又苦苦等你?显然,如果你可以知道第三方系统的响应格式,那么完全可以直接新建一个springboot项目来模拟第三方接口.只需要把URL换成假数据springboot的URL就可以完成.
通过构建假数据,可以快速完成后端与前端的联调,提高开发效率.接下来说一下具体做法:
- 新建springboot项目
- controller层中的mapping保持与第三方系统一致
- 响应结果直接读取资源目录下的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)); } }