Обработка ошибок

Введение в 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: # Oops, something went wrong
else: # All fine, let's do something # with the response

Ошибки соединения

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)
Введение в API на 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}')
Введение в API на Python

Давайте потренируемся!

Введение в API на Python

Preparing Video For Download...