【问题标题】:Get the description of a status code in Python Requests获取 Python Requests 中状态码的描述
【发布时间】:2014-09-03 07:24:09
【问题描述】:

我希望能够输入服务器响应代码并让请求告诉我代码的含义。比如code 200 --> ok

我找到了一个指向source code 的链接,它显示了代码和描述的字典结构。我看到 Requests 将返回给定描述的响应代码:

print requests.codes.processing  # returns 102
print requests.codes.ok          # returns 200
print requests.codes.not_found   # returns 404

但不是相反:

print requests.codes[200]        # returns None
print requests.codes.viewkeys()  # returns dict_keys([])
print requests.codes.keys()      # returns []

我认为这将是一项例行任务,但似乎无法在在线搜索或documentation 中找到答案。

【问题讨论】:

    标签: python http python-requests


    【解决方案1】:

    或者,对于 Python 2.x,您可以使用httplib.responses

    >>> import httplib
    >>> httplib.responses[200]
    'OK'
    >>> httplib.responses[404]
    'Not Found'
    

    在 Python 3.x 中,使用 http module:

    In [1]: from http.client import responses
    
    In [2]: responses[200]
    Out[2]: 'OK'
    
    In [3]: responses[404]
    Out[3]: 'Not Found'
    

    【讨论】:

    • 我更喜欢留在Requests,但这是一个有用的选择;感谢分享。
    • @Roberto httplib 是一个股票模块,所以这里没有任何阻碍。
    • httplib 是 Python 2.7 的东西;从 3.5 开始有 http.HTTPStatus。它在 3.4 中在哪里?
    • @user508402 你的意思是使用from http.client import responses 来映射状态码和消息吗? (我还更新了答案并包含了 3.x 版本)谢谢。
    • 啊,是的,他们来了。有了这个列表,我很容易制作自己的鸭式 HTTPStatus。谢谢。
    【解决方案2】:

    一种可能性:

    >>> import requests
    >>> requests.status_codes._codes[200]
    ('ok', 'okay', 'all_ok', 'all_okay', 'all_good', '\\o/', '\xe2\x9c\x93')
    

    元组中的第一个值用作常规代码键。

    【讨论】:

    • requests.status_codes._codes 是一个你不应该触及的实现细节。注意_codes 上的 don't-touch-me 下划线。此类实施细节如有更改或删除,恕不另行通知。
    【解决方案3】:

    我之前遇到过同样的问题,发现 回复in this question

    基本上:

    • responsedata.status_code - 给你整数状态码
    • responsedata.reason - 给出状态码的文本/字符串表示

    【讨论】:

    • 这必须是评论而不是回答问题
    • 我不明白你的意思。当前投票最多的答案是使用httplib。但是requests 库已经(在其自身内部)提供了破译响应代码含义(或字符串描述)的功能。您不必为此去其他地方。
    • 我认为早期版本的回复中不存在原因。
    【解决方案4】:

    requests.status_codes.codes.OK

    运行良好,使其在我的应用程序代码中更具可读性

    注意source code:requests.status_codes.codes 的类型是LookupDict,它覆盖了方法getitem

    你可以看到所有支持的键 - dir(requests.status_codes.codes)

    与 FLASK 结合使用时:

    我喜欢使用来自 flask-api 插件的以下枚举 from flask_api import status 在那里我得到了更多描述性版本的 HTTP 状态代码 -

    status.HTTP_200_OK

    【讨论】:

    • 您已经描述了如何从名称中获取数值。问题是关于如何从数值中获取文本描述 - 反向操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多