【问题标题】:Edit response codes for api's编辑 api 的响应代码
【发布时间】:2020-10-21 06:50:33
【问题描述】:

我将以ConvertApi 为例。如果我将它集成到我的 python 代码中,例如:

try:
    #Calling API here
except Exception as e:
    print(e)

并获取响应码

{
    "Code": 4013,
    "Message": "User credentials not set, secret or token must be passed."
}

有没有一种方法可以打印我自己的文本。据我所知,我可以做到这一点

try:
    #Calling API here
except:
    print('It didn\'t work')

但是如果我得到400 Bad Request,我想说“检查你的连接”,500 Internal Server Error 的“文件转换失败”等等。任何指导将不胜感激。

【问题讨论】:

  • 你怎么称呼它?如果您可以获得更具体的异常,则它可能会将响应代码作为属性。
  • @PeterWood 响应代码类似于{ "Code": 4013, "Message": "User credentials not set, secret or token must be passed." }
  • 编辑问题。让它很棒。了解如何How to Ask 以及如何创建minimal reproducible example
  • @PeterWood 我刚刚编辑了它

标签: python api response


【解决方案1】:

您可以设置一个字典,在其中根据特定响应创建自定义消息:

errors = {'400 Bad Request': 'Check your connection'}
try:
    #Calling API here
except Exception as e:
    print(errors.get('e'))

根据文档,您似乎只使用响应标头,因此没有充分利用响应正文的更细粒度的消息。为了做到这一点,您可以遵循这样的做法,甚至可以避免处理异常或构建自己的字典:

response = # Calling API here
if 'Message' in response:
    print(response['Message'])

【讨论】:

  • 如果实际的响应代码看起来像{ "Code": 4013, "Message": "User credentials not set, secret or token must be passed." } 我怎样才能用它创建字典?
  • 如果您认为他们提供的消息不够细粒度,那么您可以只使用响应头的第一个建议,或者基于Code-构建一个字典响应正文中的键并从中打印您的自定义消息。
  • 别误会,我喜欢你的解决方案,因为它很容易理解。我只是不想输出为 json 格式。
  • 如果您从字典中打印值,它将产生一个字符串。要使用您的示例,print(response['Message']) 将打印为 'User credentials not set, secret or token must be passed.'
  • 我明白了!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多