Roberto
Roberto

Reputation: 2194

Get the description of a status code in Python Requests

I would like to be able to enter a server response code and have Requests tell me what the code means. For example, code 200 --> ok

I found a link to the source code which shows the dictionary structure of the codes and descriptions. I see that Requests will return a response code for a given description:

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

But not the other way around:

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

I thought this would be a routine task, but cannot seem to find an answer to this in online searching, or in the documentation.

Upvotes: 60

Views: 57536

Answers (5)

mat1010
mat1010

Reputation: 847

With Python 3.5 or newer, you can use HTTPStatus:

>>> from http import HTTPStatus
>>> HTTPStatus(200).phrase
'OK'

Upvotes: 4

nuwang
nuwang

Reputation: 361

I had the same problem before and found the answer in this question

Basically:

  • responsedata.status_code - gives you the integer status code
  • responsedata.reason - gives the text/string representation of the status code

Upvotes: 26

ofbyone
ofbyone

Reputation: 13

requests.status_codes.codes.OK

works nicely and makes it more readable in my application code

Notice that in source code: the requests.status_codes.codes is of type LookupDict which overrides method getitem

You could see all the supported keys with - dir(requests.status_codes.codes)

When using in combination with FLASK:

i like use following enum from flask-api plugin from flask_api import status where i get more descriptive version of HTTP status codes as in -

status.HTTP_200_OK

Upvotes: -2

alecxe
alecxe

Reputation: 474171

Alternatively, in case of Python 2.x, you can use httplib.responses:

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

In Python 3.x, use http module:

In [1]: from http.client import responses

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

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

Upvotes: 68

shux
shux

Reputation: 350

One possibility:

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

The first value in the tuple is used as the conventional code key.

Upvotes: 31

Related Questions