python - 如何从 python 中的 API 调用中过滤出错误响应?
问题描述
我正在使用 python 从休息 API 中检索一些数据。我正在遍历一个列表以获取传入的每条记录的数据,如下所示:
safety_codes = ['M516RHJ', 'M16AJAR', 'Z49EJ57', 'Z1035TH', 'S0X6DJU9', 'S9099LP', 'S912AZSD', 'S72AEFH', 'S61ABKJ', 'W4XXATF']
#Building API variables:
api_data = dict()
rest_url = "https://www.gencodedemosite.com/restws/empcodes="
response_type = '&format=json'
header_details = {"KEY": "1101079000335WAXMEMU14532"}
#Making API call:
for i in generic_emp_codes:
response = requests.get(rest_url+'{}'.format(i)+response_format, headers = header_details)
data = json.loads(response.text)
api_data.update({i: data})
只要 emp_code 有效,我就会返回一些数据。但是当其中一个代码出错时,我得到以下响应并且所有其他数据都丢失了。
{
"error": "No record found for given employee safety code."
}
如何过滤掉这些响应,以便我的 api 调用不会失败?本质上,如果代码 M516RHJ 和 M16AJAR 返回该数据。但如果 Z49EJ57 返回错误消息,请将其移到一边并保留 M516RHJ 和 M16AJAR 的数据,然后继续执行下一个代码并重复该过程。
json_rdd = sc.parallelize(api_data)
json_df = spark.read.json(json_rdd)
json_df.printSchema()
root
|-- _corrupt_record: string (nullable = true)
一旦我收到该错误消息,我的所有数据都会损坏。
解决方案
results = []
bad_codes = []
#Making API call:
for i in generic_emp_codes:
response = requests.get(rest_url+'{}'.format(i)+response_format, headers = header_details)
data = json.loads(response.text)
if type(data)==dict and 'error' in data.keys():
bad_codes.append(data)
else:
results.append(data)
推荐阅读
- karate - 我们可以一次性在 karate-config.js 文件中设置的所有环境中运行空手道脚本吗
- spring - Thymeleaf 显示元素在使用布局时处于活动状态
- php - 正则表达式只返回某些值 PHP
- php - Symfony - 查询总和
- assembly - 动态监控 rdtsc 的性能
- c# - 在 Web API 控制器操作上为 swashbuckle/swagger 添加默认值
- excel - Excel for mac 隐藏功能区
- ios - iOS,仅对应用程序功能的子集使用生物识别身份验证
- python - 如何在 python 的 tkinter 帧中导入 matplotlib 3D 动画?
- javascript - 引导程序未加载到 pug 文件中