Tratamento de erros

Introdução a APIs em Python

Chris Ramakers

Engineering Manager

Códigos de status de erro

4xx Erros do cliente


  • Indicam problemas no lado do cliente
  • Causas comuns: requisições inválidas, falhas de autenticação, etc.

Como resolver: Corrija a requisição

5xx Erros do servidor


  • Surgem por problemas no servidor
  • Causas comuns: sobrecarga, erros de configuração, erros internos

Como resolver: Deve ser corrigido pelo administrador da API

Introdução a APIs em Python

Códigos de erro: exemplos

4xx Erros do cliente


  • 401 Unauthorized - A requisição não tem credenciais válidas para o recurso
  • 404 Not Found - O servidor não encontrou o recurso solicitado
  • 429 Too Many Requests - O cliente enviou requisições demais em pouco tempo

5xx Erros do servidor


  • 500 Internal Server Error - O servidor teve um problema inesperado e não pôde responder
  • 502 Bad Gateway - A API não conseguiu contatar outro servidor necessário para a resposta
  • 504 Gateway Timeout - O servidor (gateway) não recebeu resposta do upstream a tempo
Introdução a APIs em Python

Tratando erros

Erros da API

import requests

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

r = requests.get(url)

if r.status_code >= 400: # Opa, algo deu errado
else: # Tudo certo, vamos usar a resposta

Erros de conexão

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)
Introdução a APIs em Python

raise_for_status()

import requests

# 1: Importe as exceções da biblioteca requests from requests.exceptions import ConnectionError, HTTPError
try:
r = requests.get("http://api.music-catalog.com/albums")
# 2: Ative a geração de exceções para status de erro r.raise_for_status()
print(r.status_code)
# 3: Capture erros de conexão except ConnectionError as conn_err: print(f'Connection Error! {conn_err}.')
# 4: Capture respostas de erro do servidor da API except HTTPError as http_err: print(f'HTTP error occurred: {http_err}')
Introdução a APIs em Python

Vamos praticar!

Introdução a APIs em Python

Preparing Video For Download...