一、异步接口介绍
1、同步与异步说明
同步:
1、是所有的操作都做完,才返回给用户结果。即写完数据库之后才响应用户,用户体验不好,有种卡死的感觉。
2、这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就中断了。
异步:
1、不用等所有操作等做完,就响应用户请求。即先响应用户请求,然后慢慢去写数据库,用户体验较好,没有种卡死的感觉。
2、异步接口应用场景
1、当业务处理比较耗时, 一般会采用异步处理的方式, 这种异步处理的方式又叫Future模式。
3、异步接口一般流程
1、提交请求接口
当你请求一个异步接口,接口会立刻返回一个结果告诉你已经开始处理,结果中一般会包含一个任务id类似的东西用于追踪结果。
2、查询结果接口
另外会提供一个查询结果的接口, 当结果未处理完查询接口会返回相应的"未完成"状态, 如果已经处理完,则会返回相应的数据。
4、异步接口处理方法
1、一般采取轮询的方法,每隔一定时间间隔去请求一下查询结果的接口,直到接口返回的状态是已完成(查询到指定数据或超时)。
2、如果异步接口没有提供追踪id和查询接口,可以通过同样的方法轮询查取数据库数据或日志数据直到获取到指定结果或超时。
二、案例业务场景介绍
1、案例业务场景介绍
1、用户申请退订商品请求。
2、平台收到申请,返回一个退订流程id号给用户。
3、平台进行处理申请。
4、用户拿这个id去查询之前申请的退订商品业务。
2、技术方案
1、开发直接增加该功能,测试来验证(缺点:周期比较长,任务紧)。
2、测试人员使用一个简易的mock技术,验证自身的自动化脚本,调通。
3、取对应的接口详情
1、 退订商品申请接口
请求地址 /order/create/
请求方法 POST
请求格式 Json
参数 类型 说明
user_id String 用户id
goods_id String 商品id
num int 数量
amount float 总价
响应示例
缺少参数:
{
"msg": "参数缺失"
}
成功:
{
"order_id": "111"
}
#==================================
2、查询退订商品结果接口
请求地址 /get_result/
请求方法 GET
参数 类型 说明
order_id String 订单id
响应示例
创建中: {
}
创建成功:
{
"user_id": "abc",
"goods_id": "123456",
"num": 1,
"amount": 100.0
}
4、技术实施
1、搭建一个新增业务的后端服务(根据接口文档来),编辑json接口配置文件。
1、申请的接口
2、查询接口
josn文件内容如下:
"""
[
{
"description":"1-创建订单接口",
"request":{
"uri":"/order/create/",
"method":"POST",