项目背景
公司某客户要求供应商根据他们提供的API接口自行开发GDP任务自动下载,相关接口共有:1、查询待办任务;2、获取流程明细;3、下载;4、文件校验;5、提交任务。
开发思路
1、请求查询待办接口,获取任务ID;
2、通过任务ID入参请求获取流程明细接口,返回任务名称及任务号,使用任务名称及任务号命名文件;
3、请求下载接口,同时要支持断点续传、异常重试;
4、计算下载后文件的SHA256值,请求原文件的SHA256接口,对比SHA256值是否一致;
5、提交任务,同时分发文件。
开发过程
一、请求查询待办接口
设置api接口的url
api_url = "https://example.com/getMyTask"
设置请求头,包含用户代理、类型、及接口的APPID和APPKEY
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/58.0.3029.110 Safari/537.3", "content-type": "application/json", "APP-ID": "123456", "APPKEY": "123456" }
设置请求参数
params = { ... }
发送请求,发送请求有两种方法,选其一即可。
# response = requests.request("POST", url=apiUrl, json=params, headers=headers) response = requests.post(url=apiUrl, headers=headers, json=params)
针对请求结果这里,我们需要做一个判断。如果请求成功我们则获取所需要的值,如果请求不成功则返回请求失败提示。
# 检查响应状态 if response.status_code == 200: print(f"[Fr获取待办]API请求成功,状态码:{response.status_code}") logging.info(f'—— [Fr获取待办]API请求成功,状态码:{response.status_code}') data = response.json() # 打印接口返回的JSON格式数据 # print("1、打印获取的数据:" + f"\n {data}") # 提取JSON数据中的data字典 datas = data['data'] # print("2、提取JSON中data字典:" + f"\n {datas}") # 提取data列表中的results列表 results = datas['results'] # print("3、提取data列表中results列表:" + f"\n {results}") if not results or len(results) < 1: print('[Fr获取待办]当前下载待办无任务,无需下载!') logging.warning('[Fr获取待办]当前下载待办无任务,无需下载!') else: itemId = results[0] # workitemID元素字典 # print("4、打印workitemID元素字典(itemID):" + f"\n {itemId}") # 提取workitemID元素字典中的所有Values的值, 并组成新的列表 workitem = list(itemId.values()) # print(workitem) # 提取workitemID的值及ecnType workitemId = workitem[0] businessType = workitem[1] print("[Fr获取待办]5、【workitemID】:" + f"{workitemId}" + "【businessType(ecnType)】:" + f"{businessType}") logging.info(f'—— [Fr获取待办]获取workitemId成功:{workitemId};获取businessType(ecnType)成功:{businessType}') else: print(f"[Fr获取待办]请求失败,状态码:{response.status_code}") logging.error(f'—— [Fr获取待办]API请求失败,状态码:{response.status_code}' + '\n response text: {}".format(response.text)') # logging.error("[Fr获取待办接口]response text: {}".format(response.text))
完整代码如下:
1
原文链接:https://www.clouson.com/335.html,转载请注明出处。
评论0