记录一次使用Python调用API接口的开发(一)

记录一次使用Python调用API接口的开发(一)

项目背景 公司某客户要求供应商根据他们提供的API接口自行开发GDP任务自动下载,相关接口共有:1、查询待办任务;2、获取流程明细;3、下载;4、文件校验;5、提交任务。 开发思路 1、请求查询待办接口,获取任务ID; 2、通过任务ID入参请求获取流程明细接口,...

项目背景

公司某客户要求供应商根据他们提供的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))

完整代码如下:

此内容查看价格为5积分立即购买
有问题请联系QQ:40061980

1

原文链接:https://www.clouson.com/335.html,转载请注明出处。
0

评论0

请先
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录

微信扫一扫关注
如已关注,请回复“登录”二字获取验证码