首页 > 其他分享 >对接三方服务接口需要考虑的问题

对接三方服务接口需要考虑的问题

时间:2023-06-30 15:55:47浏览次数:53  
标签:三方 请求 重复 对接 接口 重试 失败

1、网络协议方面
确认接口对接的网络协议:https/http 端口号 或 tcp 端口号 Webservice

2、接口请求方面
尽量全部约定 数据传参+响应格式为:application/json
数据访问方式 POST请求

3、接口安全方面
考虑是否需要安全考虑,比如内网,外网一定要有认证机制/

4、【重要】幂等校验方面

确保 本公司接口和三方公司接口都有唯一校验功能,防止重复提交

5、【重要】重试机制方面
一定要确认是否需要接口调用失败后的重试机制,保证数据传输的最终一致性。
重试机制包括 实时重试调用指定次数 + 调用失败持久化数据库定时任务重试

6、日志记录

解密前的原始报文、解析后的报文、响应结果等,做好日志记录,方便后续排错。

 

幂等概念:

在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。

使用幂等的原因:

在实际业务中,由于网络延时、失败后自动重试机制等原因,会导致一个操作重复调用多次接口,因此需要做幂等来实现相同参数调多次接口和调一次接口的结果一致,保证数据的一致性。

幂等方案实现:

唯一标识符,检查表如果已经存在该标识符的操作,如果存在,则直接返回结果;否则,执行接口业务逻辑。(如果是自定义接口,可以要求对方上送一个唯一标识,但如果是定义好的接口文档,不传这个标识的话,这个方案就无法实现)

防止抓包后恶意多次重复请求:

判断请求报文里的时间戳和当前时间戳的差值,在多久之内才算作有效请求。(如果双方服务端的时间不一致,会导致判断出错,需要保持双方系统时间的高度一致)

 

设想:

我们调三方获取失败结果:

a.三方失败

  ——如果是因为三方自身就是失败了,导致我们获取到失败的结果,那问题不大,这种情况本来就需要再次请求,不会导致重复操作。

b.三方成功返回,我们未获取到(网络超时等原因)

  ——会导致三方和我们数据不一致,三方认为这个操作我们完成了,我们认为没有。

  ——如果这种情况下我们后续的自动重试能得到正确结果,那没问题。但如果三方因为做了幂等性操作,判断我们错误重复请求而返回我们错误的结果(比如返回告知我们这是无效的重复请求),那我们无法获取到正确结果,会导致我们双方的数据不一致(比如退款审核结果通知,我们以为成功告知对方,记录订单为已退款,三方没有接受到结果,认为接口调用失败,没有做退款,那双方的订单状态就不一致了);如果三方没有做幂等性操作,那我们可能会因为三方重复执行而获取到正确结果(比如预购订单,如果三方没有将订单号做唯一索引,可能就会重复插入,返回成功,如果做了索引,返回失败),那此时三方的数据是不对的,也可能三方因为重复执行而报错,我们依然获取到的是失败,不能得到正确结果。总之,一旦出现这种其中请求后一方成功返回数据,而另一方没有成功接收到数据,那基本 一定会导致双方的数据不一致。

三方向我们重复请求:

  ——可能会导致重复插入(相同参数)、接口错误(因为实际已经处理过,比如对订单的操作,取消订单)。

  ——幂等:时间戳 + 操作类型 + 订单号:同一个订单号一分钟内的同样操作判定为重复请求,直接返回失败。

 

 

 

 

 

参考:

对接一个第三方服务接口要考虑什么?

Spring Boot 实现接口幂等性的 4 种方案

标签:三方,请求,重复,对接,接口,重试,失败
From: https://www.cnblogs.com/chitangyu/p/17516982.html

相关文章

  • 经典语句接口
    学习,工作,生活,名人名言一、接口介绍提供语句简短流畅、通俗明了、诙谐机智的经典名言。广泛应用于学习、工作、生活中。二、接入点功能故事分类接口地址:http[s]://route.showapi.com/1646-1?showapi_appid=替换自己的值&showapi_sign=替换自己的值。返回格式:Json更新频......
  • AI生成图片检测器接口,广泛应用于内容审核、虚拟现实应用和促进艺术及设计领域创新等场
     【检测率99.0%以上】可以快速准确地判断一张图片是否为AI生成,减少人工审核的工作量,提高工作效率、降低运营成本,帮助人们更好地管理和利用数字图像资源。广泛应用于内容审核、虚拟现实应用和促进艺术及设计领域创新等场景。效果展示美东时间2022年4月5日,上午10时整刚过,ai生成......
  • AI生成文本检测器接口,AI检测,写作质量评估,伪造文件检测,学术不端行为检测,内容审核
     一、接口介绍【可检测出超过98%的AI生成作品】根据输入的内容(中文/英文)即可检测出是人类创作还是AI创作的概率,广泛应用于互联网平台内容审核、写作质量评估、学术不端行为检测和伪造文件检测等场景,以此帮助人们更好地理解和保护自己的知识产权和数据安全。功能体验特别提示:......
  • matlab:双或三方演化博弈,lotka-Volterra 1.双方演化博弈:代分析稳定点分析,代绘制相位图
    matlab:双或三方演化博弈,lotka-Volterra1.双方演化博弈:代分析稳定点分析,代绘制相位图,matlab仿真图代码2.三方演化博弈:代分析稳定点分析,代绘制相位图,matlab仿真图代码3.lotka-Volterra模型原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/644023709252.html原创文章,转载请说明......
  • 内网使用postman测试websocket接口(无法登录的情况下)
    postman测试websocket接口。但是发现老版本的postman不支持websocket接口的测试。于是直接上最新版本postman。打开postman,new,选择websocket。发现选不了,提示:youneedtobeinaworkspacetoperformthisaction.然后我去工作台,发现强制要登录!!!但是问题在于:我这公司电脑不......
  • 矩形三维随机裂隙网络。 使用COMSOL with Matlab接口编程
    矩形三维随机裂隙网络。使用COMSOLwithMatlab接口编程。可以直接导入COMSOL中,无需CAD,无需提取数据,方便快捷可以直接计算。裂隙由matlab编程生成,能够生成两组不同产状的裂隙。裂隙长度的分布律可以为确定的裂隙长度,也可以为在一定范围内随机均匀分布的长度。注释十分详细,有运......
  • 导入第三方项目maven插件报错
    导入一个微服务项目发现:Plugin'org.springframework.boot:spring-boot-maven-plugin:'notfound解决方式,添加版本号重新导入:查找下父工程的版本:发现是:2.3.9.RELEASE子工程微服务也要用这个版本的:原文:https://www.cnblogs.com/vevy/p/12246679.html......
  • celery 之 celery介绍架构和安装、celery执行异步任务、包结构celery、celery执行
    目录一、celery介绍架构和安装1、celery:分布式的异步任务框架,主要用来做:2、celery框架,原理3、celery架构4、安装celery5、celery不支持win,所以想再win上运行,需要额外安装eventlet二、celery执行异步任务基本使用1再虚拟环境中装celery和eventlet2写个py文件,实例化得到app对象......
  • 11celery介绍架构和安装,celery执行异步任务,包结构celery,celery执行延迟任务和定时任务
    1celery介绍架构和安装#celery:分布式的异步任务框架,主要用来做: -异步任务-延迟任务-定时任务---》如果只想做定时任务,可以不使用celery,有别的选择#celery框架,原理1)可以不依赖任何服务器,通过自身命令,启动服务(内部支持socket)2)celery服务为为其他项目......
  • 亚马逊国际获得AMAZON商品详情API接口采集sku商品规格信息列表Java调用演示案例
    ​亚马逊商品详情API接口的作用是获取Lazada电商平台上的某一商品的详情信息,包括商品的名称、销售价格、库存数量、图片、商品描述、品牌、产地、售后保障等信息。开发者可以使用该API接口获取到商品的原始数据,进行分析、筛选等操作。通过该接口获取到的商品详情数据可以结合其......