Обробка помилок

Вступ до API в Python

Chris Ramakers

Engineering Manager

Коди статусу помилок

Помилки клієнта 4xx


  • Вказують на проблему на боці клієнта
  • Типові причини: некоректні запити, помилки автентифікації тощо

Як виправити: виправте запит

Помилки сервера 5xx


  • Виникають через проблеми на сервері
  • Типові причини: перевантаження, помилки конфігурації, внутрішні збої

Як виправити: має виправити адміністратор API

Вступ до API в Python

Приклади кодів статусу помилок

Помилки клієнта 4xx


  • 401 Unauthorized — у запиті немає дійсних облікових даних для потрібного ресурсу
  • 404 Not Found — сервер не знаходить запитаний ресурс
  • 429 Too Many Requests — клієнт надіслав забагато запитів за певний час

Помилки сервера 5xx


  • 500 Internal Server Error — неочікувана помилка на сервері блокує відповідь
  • 502 Bad Gateway — сервер API не зміг дістатися до іншого сервера, потрібного для відповіді
  • 504 Gateway Timeout — сервер‑шлюз не отримав відповідь від верхнього сервера вчасно
Вступ до API в Python

Оброблення помилок

Помилки API

import requests

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

r = requests.get(url)

if r.status_code >= 400: # Отакої, щось пішло не так
else: # Усе гаразд, давайте щось зробимо # з відповіддю

Помилки з'єднання

import requests

from requests.exceptions import ConnectionError
url = ''
try: r = requests.get(url) print(r.status_code)
except ConnectionError as conn_err: print(f'Помилка з'єднання! {conn_err}.') print(error)
Вступ до API в Python

raise_for_status()

import requests

# 1: Імпортуйте винятки бібліотеки requests from requests.exceptions import ConnectionError, HTTPError
try:
r = requests.get("http://api.music-catalog.com/albums")
# 2: Увімкніть підняття винятків для кодів помилок r.raise_for_status()
print(r.status_code)
# 3: Перехопіть помилки з'єднання except ConnectionError as conn_err: print(f'Помилка з'єднання! {conn_err}.')
# 4: Перехопіть помилки-відповіді від сервера API except HTTPError as http_err: print(f'Сталася помилка HTTP: {http_err}')
Вступ до API в Python

Давайте потренуємось!

Вступ до API в Python

Preparing Video For Download...