处理不同的 API 响应 Dtype
Handling varying API response Dtype
给定一个基本的 API 调用 -
response = requests.post(url, auth=HTTPBasicAuth(key, secret), headers=headers, data=d)
return(response.json())
如果 Dtype 发生变化,您将如何处理 response
?例如,有时 json
,有时 .xlsx
[二进制]?
上下文: 我想创建一个测试 3x 条件的函数:
- Response is JSON object containing
percent_complete
- 如果为 TRUE,则 percent_complete
值用于添加到进度条。这个 apir_response
告诉我请求的数据还没有准备好,需要 percent_complete
值来更新进度条。
- Response is JSON object containing
meta
- 如果为 TRUE,则请求的数据已作为 JSON 对象返回,并且api_response
应该返回,准备在另一个函数中使用。
- 响应是一个
.xlsx
文件(二进制??) - 如果为真,则请求的数据已以 .xlsx
格式返回,并且 api_response
应该返回,准备在另一个函数中使用。
欢迎提出任何建议?
您可以使用 try
和 except
:
response = requests.post(url, auth=HTTPBasicAuth(key, secret), headers=headers, data=d)
try:
data = response.json()
# No exceptions here means that we get and parse valid json
if 'percent_complete' in data:
"""Handle option 1 here."""
elif 'meta' in data:
"""Handle option 2 here."""
else:
# Unknown format, so return None
return None
except:
# Data is non json, as exception occured
"""Try handling option 3 here by accessing `response.content`."""
给定一个基本的 API 调用 -
response = requests.post(url, auth=HTTPBasicAuth(key, secret), headers=headers, data=d)
return(response.json())
如果 Dtype 发生变化,您将如何处理 response
?例如,有时 json
,有时 .xlsx
[二进制]?
上下文: 我想创建一个测试 3x 条件的函数:
- Response is JSON object containing
percent_complete
- 如果为 TRUE,则percent_complete
值用于添加到进度条。这个apir_response
告诉我请求的数据还没有准备好,需要percent_complete
值来更新进度条。 - Response is JSON object containing
meta
- 如果为 TRUE,则请求的数据已作为 JSON 对象返回,并且api_response
应该返回,准备在另一个函数中使用。 - 响应是一个
.xlsx
文件(二进制??) - 如果为真,则请求的数据已以.xlsx
格式返回,并且api_response
应该返回,准备在另一个函数中使用。
欢迎提出任何建议?
您可以使用 try
和 except
:
response = requests.post(url, auth=HTTPBasicAuth(key, secret), headers=headers, data=d)
try:
data = response.json()
# No exceptions here means that we get and parse valid json
if 'percent_complete' in data:
"""Handle option 1 here."""
elif 'meta' in data:
"""Handle option 2 here."""
else:
# Unknown format, so return None
return None
except:
# Data is non json, as exception occured
"""Try handling option 3 here by accessing `response.content`."""