Obsługa błędów

Wprowadzenie do API w Pythonie

Chris Ramakers

Engineering Manager

Kody statusu błędów

Błędy klienta 4xx


  • Wskazują na problem po stronie klienta
  • Częste przyczyny: błędne żądania, błędy uwierzytelniania itp.

Rozwiązanie: Poprawić żądanie

Błędy serwera 5xx


  • Wynikają z problemów po stronie serwera
  • Częste przyczyny: przeciążenie serwera, błędy konfiguracji, błędy wewnętrzne

Rozwiązanie: Powinien naprawić administrator API

Wprowadzenie do API w Pythonie

Kody statusu błędów: przykłady

Błędy klienta 4xx


  • 401 Unauthorized - Żądanie nie zawiera prawidłowych danych uwierzytelniających
  • 404 Not Found - Serwer nie może znaleźć żądanego zasobu
  • 429 Too Many Requests - Klient wysłał zbyt wiele żądań w określonym czasie

Błędy serwera 5xx


  • 500 Internal Server Error - Serwer napotkał nieoczekiwany problem uniemożliwiający odpowiedź
  • 502 Bad Gateway - Serwer API nie mógł skontaktować się z innym wymaganym serwerem
  • 504 Gateway Timeout - Serwer (działający jako brama) nie otrzymał odpowiedzi od serwera nadrzędnego w czasie
Wprowadzenie do API w Pythonie

Obsługa błędów

Błędy 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

Błędy połączenia

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)
Wprowadzenie do API w Pythonie

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}')
Wprowadzenie do API w Pythonie

Czas na ćwiczenia!

Wprowadzenie do API w Pythonie

Preparing Video For Download...