这几天遇到了一个需要和同公司不同部门的第三方服务对接的需求,那个第三方服务是一个PHP服务,前人没打什么日志,直接让SpringWebFlex框架自动对第三方的返回内容做了反序列化,由此引入了一堆问题。
在第三方变更时,有个地方没通知我们,导致我方序列化处的逻辑报错。而由于没打日志,又无法获取到原始返回内容,因此只好将SpringWebFlex的bodyToMono<SomeDTO>
改为了bodyToMono<String>
,然后手动使用Jackson将返回的字符串进行序列化。
最终发现无法序列化是因为,PHP服务返回空值时,返回的是个[]
空对象,经典PHP返回内容。
由此,得出了一些心得:
第三方服务的一切对你都是未知的:
- 传入第三方的参数是什么样的?
- 调用第三方的HTTP方法是什么样的?
- 接收到的第三方直接响应体是什么样的?
- 接收到的第三方响应头是什么样的?
- 如果第三方需要我方协助排查,提供请求报文,如何获取完整请求报文?
我们完全无法事先获知。
因此,对接第三方服务时一定要事无巨细的打上日志!