是否有必要将三方订单 API 的最后一次有效响应结果保存下来?

业务逻辑问题

我们程序的业务逻辑中,经常需要获取三方订单数据。很长一段时间,经常困扰我们的问题是,业务逻辑经常发生变化,但三方平台只能获取某一段时间内的订单数据。这导致历史数据在业务逻辑发生变化时,很难再找到当时的数据进行调整。

当然,这里只提到了订单,其他单据和内容也会有相同的问题。但他们都具备相同的特征:

  1. 有唯一识别标识,如:订单 ID 或 页面路径;
  2. 在一段时间内内容会发生变化,如:订单状态 或 页面修改;
  3. 在更长的时间内数据不再发生变动,但会被归档导致无法访问;

解决方案

是否需要将这部分接口或页面响应的结果,随业务处理过程,在验证有效之后进行存储。比如:

在三方订单数据表中单独准备一些字段来存储三方订单接口响应的最后一次订单数据、订单优惠数据、订单物流数据 和 订单收货数据。

这边能在需求发生变动,且当三方平台无法获取这部分历史数据的时候进行数据更新或相关业务逻辑的处理。

在这方面我能想到的一些问题:

  1. 三方平台接口响应逻辑升级,导致历史数据不兼容;
  2. 己方业务逻辑变动导致采用新的一组接口或页面;

问题1只能从处理逻辑上进行兼容,问题2可能对业务变动前的数据就没有什么好办法了。

我想问问大家都是采用什么方案来处理这种问题的,有没有更好的解决方案。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

很有必要。但不限于mysql,日志形式的。有条件的大项目使用DTO出入参数,不至于需要回过头看文档,也能避免一些系统间人员对接的扯皮,当然这也需要花费一些时间成本。

3个月前 评论
讨论数量: 6

很有必要。但不限于mysql,日志形式的。有条件的大项目使用DTO出入参数,不至于需要回过头看文档,也能避免一些系统间人员对接的扯皮,当然这也需要花费一些时间成本。

3个月前 评论

我们这是拉取别人接口,别人访问我们接口 都是有留存的,便于比对问题,查看历史接口错误之类的

3个月前 评论

业务处理业务数据
调用第三方要有请求日志 请求参数,返回参数(可以不用不能没有)

3个月前 评论
陈先生

很有必要,可以存到 SLS,datadog ,或者单独挂盘存储

3个月前 评论
sanders

SLS 是有用到的,但为了控制费用只存了 30 天的,且没有做太多整理,只是将各种日志规整了一下格式存在一起。看来还是有必要拆出关键的日志,加一下向 OSS 归档的设置。

3个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!