处理不同的 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 条件的函数:

  1. Response is JSON object containing percent_complete - 如果为 TRUE,则 percent_complete 值用于添加到进度条。这个 apir_response 告诉我请求的数据还没有准备好,需要 percent_complete 值来更新进度条。
  2. Response is JSON object containing meta - 如果为 TRUE,则请求的数据已作为 JSON 对象返回,并且api_response 应该返回,准备在另一个函数中使用。
  3. 响应是一个 .xlsx 文件(二进制??) - 如果为真,则请求的数据已以 .xlsx 格式返回,并且 api_response 应该返回,准备在另一个函数中使用。

欢迎提出任何建议?

您可以使用 tryexcept

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`."""