Skip to main content

Uma biblioteca Python moderna, leve e resiliente para simplificar a interação com APIs REST.

Project description

🧘 ApiZen

PyPI version License: MIT

ApiZen é uma biblioteca Python moderna, leve e resiliente projetada para tornar a interação com APIs REST o mais simples possível. Inspirada na filosofia Zen, ela elimina o "boilerplate" e foca na clareza e robustez.


✨ Funcionalidades

  • 🚀 Sync & Async: Suporte nativo para requisições síncronas (requests) e assíncronas (httpx).
  • 🛡️ Exceções Customizadas: Hierarquia de erros clara para facilitar o tratamento de falhas.
  • 🔄 Resiliência Integrada: Retentativas automáticas inteligentes (Exponential Backoff) com tenacity.
  • 🔑 Auth Facilitado: Helpers para tokens dinâmicos.
  • 📝 Logging Transparente: Acompanhe o que acontece em cada requisição.
  • Zero Config: Comece com uma linha de código, mas configure tudo se precisar.

📦 Instalação

pip install api-zen

🛠️ Como Usar

1. Requisição Rápida (Estilo Zen)

Para algo rápido, você nem precisa instanciar uma classe:

from api_zen import request_api

data = request_api("https://jsonplaceholder.typicode.com/posts/1")
print(data['title'])

2. Uso Síncrono (Recomendado para Scripts)

from api_zen import ApiZen

# Configure uma base URL e headers padrão
api = ApiZen(base_url="https://api.exemplo.com", timeout=5)
api.set_token("seu-token-aqui")

# GET
users = api.get("/users", params={"active": "true"})

# POST
new_user = api.post("/users", json={"name": "Thiago", "role": "Dev"})

# Outros métodos: put(), patch(), delete(), head(), options()

3. Uso Assíncrono (Para Performance Máxima)

import asyncio
from api_zen import AsyncApiZen

async def main():
    api = AsyncApiZen(base_url="https://jsonplaceholder.typicode.com")
    
    # Executa várias requisições concorrentemente
    tasks = [api.get(f"/posts/{i}") for i in range(1, 5)]
    results = await asyncio.gather(*tasks)
    
    for post in results:
        print(post['title'])

asyncio.run(main())

🚨 Tratamento de Erros

A ApiZen fornece exceções específicas para que seu código seja mais previsível:

from api_zen import ApiZen, ApiZenHttpError, ApiZenError

api = ApiZen()

try:
    data = api.get("https://api.exemplo.com/recurso-inexistente")
except ApiZenHttpError as e:
    print(f"Erro HTTP {e.status_code}: {e.response_data}")
except ApiZenError as e:
    print(f"Erro de conexão ou timeout: {e}")

⚙️ Configuração de Resiliência

Por padrão, a ApiZen tenta realizar até 3 tentativas com um intervalo exponencial se encontrar erros de rede ou timeouts. Você pode customizar isso na inicialização:

api = ApiZen(max_retries=5, timeout=15)

🤝 Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir Issues ou Pull Requests no repositório oficial.


📄 Licença

Distribuído sob a licença MIT. Veja LICENSE para mais informações.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

api_zen-0.2.1.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

api_zen-0.2.1-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file api_zen-0.2.1.tar.gz.

File metadata

  • Download URL: api_zen-0.2.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for api_zen-0.2.1.tar.gz
Algorithm Hash digest
SHA256 c42e3575457ce6d14a80ac6a85fa6a04ace96d042f5d7b798a420fafeb6c8a43
MD5 922445ff271572f6d13d344d4d770510
BLAKE2b-256 6cf139a9d6dabaf95249f96e3e8b2bc84b8d4554f9295c6864180d2705160bbc

See more details on using hashes here.

File details

Details for the file api_zen-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: api_zen-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for api_zen-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 048606a254f971100d1e2a9278f2d51f08690a5cf9b92e52255baf050604ec88
MD5 f34fa10d6c27944574bfea694547df91
BLAKE2b-256 13dacd9f1f47db09eba20151cdc1554132870d4375b73eb3e99406a2ffa81322

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page