Запросы - как узнать, получаете ли сообщение успешное сообщение?

Мой вопрос тесно связан с этим.

Я использую библиотеку запросов, чтобы попасть в конечную точку HTTP. Я хочу проверить, является ли ответ успешным.

В настоящее время я делаю это:

r = requests.get(url)
if 200 <= response.status_code <= 299:
    # Do something here!

Вместо того, чтобы делать эту уродливую проверку значений от 200 до 299, есть ли сокращенная версия, которую я могу использовать?

Ответы

Ответ 1

Ответ имеет свойство ok. Используйте это.

@property
def ok(self):
    """Returns True if :attr:'status_code' is less than 400.

    This attribute checks if the status code of the response is between
    400 and 600 to see if there was a client error or a server error. If
    the status code, is between 200 and 400, this will return True. This
    is **not** a check to see if the response code is ''200 OK''.
    """
    try:
        self.raise_for_status()
    except HTTPError:
        return False
    return True

Ответ 2

Я новичок в Python, но я думаю, что самый простой способ это:

if response.ok:
    # whatever

Ответ 3

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

try:
    resp = requests.get(url)
    resp.raise_for_status()
except requests.exceptions.HTTPError as err:
    print(err)

EAFP: проще просить прощения, чем разрешения: вам следует просто делать то, что вы ожидаете, и если из операции может быть сгенерировано исключение, то поймайте его и разберитесь с этим фактом.