話說好像都沒有說過狀態碼,乾脆今天就來說說常見的HTTP的狀態碼都有哪些吧,偵錯時也能第一時間知道是伺服器端錯誤還是怎樣了
狀態碼的第一位代表
1xx:資料回應 伺服器收到要求了,正在處理中
2xx:成功 請求成功
3xx:重新導向 資料被移動到別的地方,正在把使用者導去那裏
4xx:用戶端錯誤(你的錯) 請求錯誤,像在請求一個不存在的網頁
5xx:伺服器錯誤(伺服器的錯) 伺服器無法完成你的要求
常見的狀態碼
200 請求成功
201 成功建立資料
204 成功但沒內容回傳
301 資料已經永久地轉到另一個網址,並自動把指向舊網址的要求重新導向新的網址
400 請求的資源格式錯誤
401 沒有授權,需要驗證
403 權限不夠
404 資料不存在
500 伺服器內部錯誤
503 伺服器目前不可用
如果想要知道伺服器回應什麼的話,可以用request套件來解決這個問題,向下面的範例
import requests
url = "https://dog.ceo/api/breeds/image/random"
response = requests.get(url)
print(response.status_code)
如果今天只想知道錯誤的,可以使用try-except來捕捉
import requests
url = "https://httpbin.org/status/404"
try:
response = requests.get(url)
response.raise_for_status()
print("成功獲取資料")
except requests.exceptions.HTTPError as Http:
print(Http)#輸出收到的錯誤狀態碼
那有人就好奇了,我碰到的不是長這樣,沒有數字
那個大概是連線有問題,而連線錯誤必須要用try-except來捕捉,否則程式會報錯
如果是常見的連線逾時可以用
requests.exceptions.Timeout
連線錯誤則是
requests.exceptions.ConnectionError
如果都不是的話就直接使用Exception(不管是什麼樣錯誤都接收)吧
如下所述
import requests
url = "https://dog.ceo/api/breeds/image/random"
try:
response = requests.get(url,timeout=0.00001)#設定五秒後逾時
print("獲取資料")
except requests.exceptions.ConnectionError:
print("連線錯誤")
except requests.exceptions.Timeout:
print("連線逾時")
except Exception as error:
print("其他錯誤",error)