Gestionarea erorilor

Introducere în API-uri cu Python

Chris Ramakers

Engineering Manager

Coduri de stare pentru erori

Erori de client 4xx


  • Indică probleme din partea clientului
  • Cauze frecvente: cereri invalide, erori de autentificare etc.

Soluție: Corectați cererea

Erori de server 5xx


  • Provin din probleme pe server
  • Cauze frecvente: server supraîncărcat, erori de configurare, erori interne

Soluție: Trebuie remediate de administratorul API

Introducere în API-uri cu Python

Coduri de stare pentru erori: exemple

Erori de client 4xx


  • 401 Unauthorized - Cererea nu conține acreditive de autentificare valide pentru resursa solicitată
  • 404 Not Found - Serverul nu poate găsi resursa solicitată
  • 429 Too Many Requests - Clientul a trimis prea multe cereri într-un interval de timp dat

Erori de server 5xx


  • 500 Internal Server Error - Serverul a întâmpinat o problemă neașteptată care îl împiedică să răspundă
  • 502 Bad Gateway - Serverul API nu a putut contacta cu succes un alt server necesar pentru a finaliza răspunsul
  • 504 Gateway Timeout - Serverul (care acționează ca gateway) nu a primit un răspuns de la serverul upstream în timp util
Introducere în API-uri cu Python

Gestionarea erorilor

Erori 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

Erori de conexiune

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)
Introducere în API-uri cu Python

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}')
Introducere în API-uri cu Python

Să exersăm!

Introducere în API-uri cu Python

Preparing Video For Download...