Depurando APIs em Python: Inspecionando Respostas HTTP com requests

Depurando APIs em Python: Inspecionando Respostas HTTP com requests

Inspecionar metadados de requisições HTTP é essencial para validar chamadas de API, verificar parâmetros de autenticação e depurar integrações do sistema. Utilizando a biblioteca requests, você consegue acessar o código de status (status code) e todos os cabeçalhos (headers) de uma resposta web em poucas linhas de código.

Python
import requests

def inspecionar_resposta_http(url: str):
    # Realiza a requisição GET na URL informada
    resposta = requests.get(url, timeout=5)

    # Captura o código de status HTTP (ex: 200, 404, 500)
    status = resposta.status_code

    # Captura os cabeçalhos retornados pelo servidor
    cabecalhos = resposta.headers

    # Retorna as informações organizadas
    return status, cabecalhos

# Exemplo prático de uso
if __name__ == "__main__":
    url_alvo = "https://api.github.com"
    
    status_code, headers = inspecionar_resposta_http(url_alvo)

    print(f"Status HTTP: {status_code}")
    print(f"Tipo de Conteúdo (Content-Type): {headers.get('content-type')}")
    print(f"Servidor: {headers.get('server')}")

Pontos-chave

  • Dicionário case-insensitive: O objeto response.headers é um dicionário especial do requests que ignora diferenças entre maiúsculas e minúsculas nas chaves (ex: headers.get('content-type') e headers.get('Content-Type') retornam o mesmo valor).

  • Método .get() para evitar erros: Sempre utilize .get('nome-do-cabecalho') em vez da notação de colchetes para evitar que o script lance exceções (KeyError) caso um cabeçalho específico não seja enviado pelo servidor.

  • Validação rápida de status: Você pode validar se a requisição foi bem-sucedida usando o booleano response.ok (retorna True para códigos entre 200 e 299) ou o método response.raise_for_status(), que lança uma exceção para códigos de erro (4xx ou 5xx).

  • Uso obrigatório de timeout: Definir um tempo limite (ex: timeout=5) impede que a aplicação fique bloqueada indefinidamente aguardando a resposta de um servidor instável ou fora do ar.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server