你可以簡單地調用Response.raise_for_status()
您的迴應:
>>> import requests
>>> url = 'http://stackoverflow.com/doesnt-exist'
>>> r = requests.get(url)
>>>
>>> print r.status_code
404
>>> r.raise_for_status()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "requests/models.py", line 831, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found
這將提高一個requests.HTTPError
任何4xx
或5xx
響應。
有關更完整的示例,請參閱Response Status Code上的文檔。
注意這並不你究竟問了什麼(status != 200
):它不會引發異常的201 Created
或204 No Content
,或任何3xx
的重定向 - 但是這是最有可能你想要的行爲:requests
只會跟隨重定向,而其他2xx
通常只是在處理API時就好了。