Hướng dẫn if response 200 python

What is the easiest way to check whether the response received from a requests post was "200 OK" or an error has occurred?

I tried doing something like this:

....
resp = requests.post[my_endpoint_var, headers=header_var, data=post_data_var]
print[resp]
if resp == "":
    print ['OK!']
else:
    print ['Boo!']

The output on the screen is:

Response [200] [including the ""]
Boo!

So even though I am getting a 200, my check in the if statement is somehow not matching?

Shaido

26.3k21 gold badges68 silver badges72 bronze badges

asked Jan 8, 2019 at 7:47

3

According to the docs, there's a status_code property on the response-object. So you can do the following:

if resp.status_code == 200:
    print ['OK!']
else:
    print ['Boo!']

EDIT:

As others have pointed out, a simpler check would be

if resp.ok:
    print ['OK!']
else:
    print ['Boo!']

if you want to consider all 2xx response codes and not 200 explicitly. You may also want to check Peter's answer for a more python-like way to do this.

answered Jan 8, 2019 at 7:52

eoleol

21k4 gold badges34 silver badges56 bronze badges

3

Just check the response attribute resp.ok. It is True for all 2xx responses, but False for 4xx and 5xx. However, the pythonic way to check for success would be to optionally raise an exception with Response.raise_for_status[]:

try:
    resp = requests.get[url]
    resp.raise_for_status[]
except requests.exceptions.HTTPError as err:
    print[err]

EAFP: It’s Easier to Ask for Forgiveness than Permission: You should just do what you expect to work and if an exception might be thrown from the operation then catch it and deal with that fact.

answered Oct 19, 2019 at 15:37

PeterPeter

5,3412 gold badges20 silver badges32 bronze badges

5

Much simpler check would be

    if resp.ok :
        print ['OK!']
    else:
        print ['Boo!']

answered Feb 29, 2020 at 1:59

MrHumbleMrHumble

711 silver badge1 bronze badge

1

Since any 2XX class response is considered successful in HTTP, I would use:

if 200 

Chủ Đề