【问题标题】:Handling different response data types of REST APIs处理 REST API 的不同响应数据类型
【发布时间】:2017-11-02 06:55:05
【问题描述】:

我的应用程序的要求是在 GitHub API 上执行 GET

https://api.github.com/repos/{full_name}/commits

在理想情况下,此 REST API 返回一个字典列表。然后应用程序必须获取结果的第一个元素。

但是,REST API 也可能在非理想情况下返回字典(没有提交的空存储库)。在这种情况下,如果获取第一个元素,则会抛出 keyerror。

现在,我已将代码包装在 try..catch 中。因此,如果在非理想情况下引发异常,应用程序就会退出。

有没有更好的方法来处理理想和非理想情况?

【问题讨论】:

  • 请注意,在 python 世界中,使用 try/except 进行流控制并不一定是不受欢迎的,通常被认为是最佳实践。如果错误情况相对而言并不常见,请不要放弃愉快地使用 try 语句并继续前进的想法。

标签: python rest response github-api


【解决方案1】:

GitHub API 请求的响应采用 JSON 格式。如果您使用 JSON 库解析响应,然后使用 for 循环遍历提交数据会更好。例如,打印您从响应中获得的所有提交 sha 的好方法如下:

import json
import requests

response = requests.get(<<URL with necessary authentication>>)
if response != 0 and response != None:
    response_j = response.json() #here 'response' is the response you get from the requests.get() command for example
    for commit in response_j:
        print(commit['sha'])

如果存储库没有提交,它应该返回一个空字典,这样你就可以设置一个条件来检查没有提交。

【讨论】:

  • 如果 REST API 在非理想情况下返回字典,这会起作用吗?
  • 哦,你可以使用 if 语句来检查空响应。我已经编辑了代码以包含检查。
猜你喜欢
  • 2019-09-24
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2015-09-02
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多