Zpracování chyb

Úvod do API v Pythonu

Chris Ramakers

Engineering Manager

Stavové kódy chyb

Chyby klienta 4xx


  • Označují problémy na straně klienta
  • Časté příčiny: chybné požadavky, selhání ověření atd.

Řešení: Opravit požadavek

Chyby serveru 5xx


  • Vznikají při problémech na straně serveru
  • Časté příčiny: přetížený server, chyby konfigurace, interní chyby

Řešení: Řeší správce API

Úvod do API v Pythonu

Stavové kódy chyb: příklady

Chyby klienta 4xx


  • 401 Unauthorized – Požadavek neobsahuje platné přihlašovací údaje
  • 404 Not Found – Server nemůže najít požadovaný zdroj
  • 429 Too Many Requests – Klient odeslal příliš mnoho požadavků za daný čas

Chyby serveru 5xx


  • 500 Internal Server Error – Server narazil na neočekávaný problém a nemůže odpovědět
  • 502 Bad Gateway – API server nemohl úspěšně kontaktovat jiný server potřebný k dokončení odpovědi
  • 504 Gateway Timeout – Server (fungující jako brána) neobdržel odpověď od upstream serveru včas
Úvod do API v Pythonu

Zpracování chyb

Chyby API

import requests

url = 'http://api.music-catalog.com/albums'

r = requests.get(url)

if r.status_code >= 400: # Oops, something went wrong
else: # All fine, let's do something # with the response

Chyby připojení

import requests

from requests.exceptions import ConnectionError
url = ''
try: r = requests.get(url) print(r.status_code)
except ConnectionError as conn_err: print(f'Connection Error! {conn_err}.') print(error)
Úvod do API v Pythonu

raise_for_status()

import requests

# 1: Import the requests library exceptions from requests.exceptions import ConnectionError, HTTPError
try:
r = requests.get("http://api.music-catalog.com/albums")
# 2: Enable raising exceptions for returned error statuscodes r.raise_for_status()
print(r.status_code)
# 3: Catch any connection errors except ConnectionError as conn_err: print(f'Connection Error! {conn_err}.')
# 4: Catch error responses from the API server except HTTPError as http_err: print(f'HTTP error occurred: {http_err}')
Úvod do API v Pythonu

Pojďme si to procvičit!

Úvod do API v Pythonu

Preparing Video For Download...