Получить описание кода состояния в запросах Python

Я хотел бы иметь возможность ввести код ответа сервера и запросить подсказки, что означает этот код. Например, код 200 → ok

Я нашел ссылку на исходный код, который показывает структуру словарей кодов и описаний. Я вижу, что 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 []

Я думал, что это будет рутинная задача, но не может найти ответа на это в онлайн-поиске или в документации.

Ответы

Ответ 1

Одна возможность:

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

Первое значение в кортеже используется как обычный кодовый ключ.

Ответ 2

В качестве альтернативы, в случае Python 2.x вы можете использовать httplib.responses:

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

В Python 3.x используйте http модуль:

In [1]: from http.client import responses

In [2]: responses[200]
Out[2]: 'OK'

In [3]: responses[404]
Out[3]: 'Not Found'

Ответ 3

requests.status_codes.codes.OK

работает красиво и делает его более читаемым в моем коде приложения

Обратите внимание, что в исходном коде: request.status_codes.codes имеет тип LookupDict, который переопределяет метод getitem

Вы можете видеть все поддерживаемые ключи с помощью - dir(requests.status_codes.codes)

При использовании в сочетании с FLASK:

from flask_api import status нравится использовать следующий enum из flask-api plugin from flask_api import status где я получаю более описательную версию кодов состояния HTTP,

status.HTTP_200_OK