前言
之前的工作任务,大多一直在做这样一件事,请求第三方接口,并将接口数据进行解析成固定格式后返回。之后在做业务处理,包括更新数据库状态之类的。
这里想展示一种解决方案,能够解决以下的问题,包括:
- 请求出现异常,包括链接超时,解析异常,请求错误的处理。
- 方便的进行单元测试。
- 方便的进行扩展。
注意第3条是指数据来源可能是不同的url,请求和相应格式都不同,但是要做的业务逻辑却是相同的,如何做到方便扩展,接入新的三方时,不用该业务代码。
还有第2点,特别提到了单元测试,这里我是指模拟测试,因为在真实情况下,这些类似于创建订单的接口,不是你想调用就调用的,甚至是有些接口,比如银行的服务,在调用的时候都是有成本的,这个时候使用模拟类来完成单元测试就非常有必要了。在这个例子中我们使用的python的mock对象。
下面我会写一个假的例子,来讲解我的解决方案,实际上我们大多数调用的三方接口,并不是走查询这么简单,其实更多是一些post接口,包括下单,和通知。就算是查询接口,可能也不会走get,而是走的post协议。