GraphQL com Python

python
3 – Web
3.3 – APIs
3.3.1 – REST (requests, Django REST Framework)
3.3.2 – GraphQL (Graphene)
LEGENDA
Nivel_1
Nivel_2
Nivel_3

GraphQL é uma linguagem de consulta para APIs desenvolvida pelo Facebook. Ela permite que o cliente peça exatamente os dados que precisa. Primeiramente, isso elimina o problema de over-fetching do REST. Por exemplo, um cliente pode solicitar apenas nome e email de um usuário. Além disso, uma única requisição GraphQL busca dados de múltiplos recursos. A voz passiva é usada aqui: “os esquemas são definidos usando tipos e campos”. Quando utilizar GraphQL? Em aplicações com interfaces complexas. Também quando o time frontend e backend são separados. Graphene é a biblioteca principal para GraphQL em Python. Ela integra-se bem com Django, SQLAlchemy e outros ORMs. Vamos explorar conceitos, implementação e casos de uso. Três subtítulos guiarão você pelo mundo GraphQL. Ao final, você construirá sua primeira API GraphQL completa.

Conceitos fundamentais do graphql

GraphQL tem três operações principais: query, mutation e subscription. Query busca dados (equivalente ao GET do REST). Mutation altera dados (POST, PUT, DELETE). Subscription recebe dados em tempo real (WebSockets). Cada operação é definida em um esquema com tipos. Tipos podem ser escalares (String, Int) ou objetos complexos. A voz passiva é aplicada: “as relações entre tipos são declaradas explicitamente”. Exemplo de um esquema GraphQL simples:

O cliente pode fazer consultas como: { usuario(id: 1) { nome email posts { titulo } } }. Isso retorna apenas os campos solicitados, nada mais. A fórmula de economia de dados é: \(E = 1 – \frac{T_{\text{GraphQL}}}{T_{\text{REST}}}\) Onde T representa o tamanho dos dados transferidos. GraphQL pode economizar até 70% de tráfego em aplicações ricas.

Implementando graphql com graphene e django

Graphene é a biblioteca padrão para GraphQL em Python. Ela funciona com Django, Flask, FastAPI e SQLAlchemy. Primeiro, instale com pip install graphene graphene-django. Depois, defina os tipos (Type) e as queries (Query). Quando usar Graphene? Em projetos Django que exigem flexibilidade. Também em APIs públicas onde clientes têm necessidades diversas. Exemplo completo de API GraphQL com Django:

Acesse /graphql/ no navegador para ver o GraphiQL. Essa interface interativa permite testar consultas e mutações. O GraphQL playground é uma das maiores vantagens da tecnologia.

GraphQL vs. rest: quando escolher cada um

REST é mais simples e adequado para APIs padrão. GraphQL é mais flexível e eficiente para clientes variados. Quando escolher GraphQL? Em aplicações com muitos recursos relacionados. Por exemplo, dashboards, aplicações móveis ou feeds de redes sociais. REST é melhor para APIs públicas simples e caching em CDN. GraphQL tem curva de aprendizado mais íngreme que REST. A voz passiva é usada: “as decisões de escolha são baseadas no contexto”. Graphene é excelente, mas a comunidade é menor que a do DRF. Para projetos pequenos, REST ainda é mais prático. Para sistemas complexos com frontend exigente, GraphQL brilha. Combine ambos: use REST para operações simples e GraphQL para consultas complexas. Comece com REST e migre partes específicas para GraphQL quando necessário. GraphQL não é bala de prata, mas é uma ferramenta poderosa. Experimente Graphene em seu próximo projeto Django. Você nunca mais vai querer criar múltiplos endpoints REST.

REST em Python

python
3 – Web
3.3 – APIs
3.3.1 – REST (requests, Django REST Framework)
3.3.2 – GraphQL (Graphene)
LEGENDA
Nivel_1
Nivel_2
Nivel_3

REST é um estilo arquitetural para construir APIs web. Ele usa os verbos HTTP (GET, POST, PUT, DELETE) como ações. Primeiramente, cada recurso é identificado por uma URL única. Por exemplo, /produtos/42 acessa o produto 42. Além disso, as respostas geralmente usam o formato JSON. A voz passiva é usada aqui: “os dados são transferidos sem estado”. Isso significa que cada requisição contém toda informação necessária. Quando utilizar REST? Na maioria das aplicações web modernas. Python oferece duas ferramentas essenciais para REST. Requests para consumir APIs e Django REST Framework para criá-las. Vamos explorar ambas em detalhes práticos. Três subtítulos organizam este guia completo. Ao final, você saberá construir e consumir APIs profissionais.

Requests: consumindo apis rest com simplicidade

Requests é a biblioteca mais popular para HTTP em Python. Ela simplifica chamadas GET, POST, PUT e DELETE. Quando usar Requests? Em qualquer projeto que consuma APIs externas. Por exemplo, buscar dados de clima, cotação ou redes sociais. Primeiro, instale com pip install requests. Depois, faça chamadas com poucas linhas de código. A voz passiva é aplicada: “os parâmetros são passados como dicionário”. Exemplo completo de consumo de API REST:

Requests trata JSON, autenticação e erros de forma elegante. É a ferramenta padrão para integração com APIs REST.

Django rest framework: construindo apis profissionais

Django REST Framework (DRF) é o padrão para APIs com Django. Ele oferece serializadores, viewsets e autenticação prontos. Quando usar DRF? Em projetos Django que precisam de API robusta. Primeiro, instale com pip install djangorestframework. Adicione 'rest_framework' ao INSTALLED_APPS do Django. A voz passiva é aplicada: “os serializadores são usados para validar dados”. Exemplo completo de uma API de produtos com DRF:

Com esse código, você tem uma API completa com: Listagem, criação, atualização, remoção e autenticação. Acesse /api/produtos/ para testar no navegador. DRF também gera uma interface web para explorar a API. Isso acelera o desenvolvimento em pelo menos 70%.

Quando usar requests vs. django rest framework

Requests é para consumo de APIs de terceiros. DRF é para criação de suas próprias APIs. Portanto, as ferramentas são complementares, não concorrentes. Use Requests em scripts, bots ou integrações simples. Use DRF em sistemas web completos com Django. A fórmula de produtividade com DRF: \(P = \frac{T_{\text{manual}}}{T_{\text{DRF}}} \approx 3\) Ou seja, você é três vezes mais rápido com DRF. No entanto, DRF exige conhecimento de Django. Para APIs pequenas sem Django, prefira FastAPI ou Flask. Requests é obrigatório em qualquer ambiente Python. Ele é leve, rápido e fácil de aprender. Combine ambos quando seu Django REST Framework consumir outras APIs. Exemplo: sua API DRF pode chamar um serviço externo via Requests. A voz passiva é usada: “diferentes camadas são integradas harmoniosamente”. Portanto, domine as duas ferramentas para ser um desenvolvedor completo. Comece com Requests hoje mesmo. Avance para DRF quando precisar escalar seu projeto.