đ API de Controle de Gastos Pessoais em Python: Aprenda Criando do Zero
- #Python
đ Introdução
Imagine ter o controle total dos seus gastos na ponta dos dedos, mas sem precisar depender de planilhas confusas ou aplicativos complicados. Ă exatamente isso que vocĂȘ vai aprender neste artigo. Vamos construir uma API de controle de gastos pessoais do zero usando Python, de forma simples, prĂĄtica e eficiente. VocĂȘ nĂŁo precisa ser um expert para começar, mas mesmo quem jĂĄ tem anos de experiĂȘncia vai encontrar boas prĂĄticas, organização de cĂłdigo e dicas que fazem toda a diferença em projetos reais.
Ao longo do artigo, vocĂȘ vai entender os conceitos fundamentais de APIs, criar endpoints que realmente funcionam, manipular dados e testar tudo de forma prĂĄtica. Cada passo foi pensado para que vocĂȘ aprenda fazendo, construindo algo que seja Ăștil, escalĂĄvel e elegante. Prepare-se para transformar ideias em cĂłdigo e ver sua prĂłpria API ganhar vida.
No final, vocĂȘ terĂĄ nĂŁo apenas uma API funcional, mas tambĂ©m a base para evoluir o projeto para bancos de dados, autenticação e atĂ© migração para frameworks mais avançados como FastAPI. Vamos mergulhar nesse universo e criar algo que seja Ăștil, divertido e profissional.
đ§ Conceitos BĂĄsicos
Antes de colocar a mão no código, precisamos alinhar alguns conceitos essenciais. Não se preocupe, nada de teoria maçante. Aqui vamos direto ao ponto, mostrando o que realmente importa para criar uma API funcional e elegante.
O que Ă© uma API?
Uma API (Application Programming Interface) é basicamente um canal de comunicação entre sistemas. Ela permite que aplicativos conversem entre si, troquem dados e executem funçÔes de forma estruturada. No nosso caso, vamos criar uma API que organiza e gerencia gastos pessoais.
Pense assim: se vocĂȘ tem um aplicativo de controle financeiro no celular, ele precisa buscar, enviar e atualizar dados. Tudo isso Ă© feito atravĂ©s de APIs.
Tipos de API mais comuns
REST: o mais usado no mundo web. Baseado em recursos e métodos HTTP (GET, POST, PUT, DELETE).
SOAP: mais antigo, complexo e pesado. NĂŁo Ă© nosso foco aqui.
GraphQL: moderno, flexĂvel, mas um pouco mais avançado. Ideal para projetos maiores.
Métodos HTTP
Cada endpoint da sua API tem uma função e um método HTTP que define essa função:
GET: recuperar informaçÔes. Exemplo: listar todas as despesas cadastradas.
POST: criar novos registros. Exemplo: adicionar uma nova despesa.
PUT: atualizar registros existentes. Exemplo: corrigir o valor ou categoria de uma despesa.
DELETE: remover registros. Exemplo: apagar uma despesa que nĂŁo existe mais.
Formato de dados: JSON
O JSON (JavaScript Object Notation) Ă© o formato padrĂŁo para troca de dados em APIs. Ele Ă© leve, fĂĄcil de ler e escrever.
Exemplo de uma despesa em JSON:
{
"id": 1,
"descricao": "Almoço",
"valor": 45.50,
"categoria": "Alimentação"
}
id
: identificador Ășnico da despesa
descricao
: o que foi comprado
valor
: quanto custou
categoria
: classificação da despesa
Aprender esses conceitos vai facilitar muito quando começarmos a escrever nosso código. Eles são a base de qualquer API, seja ela simples ou complexa.
đ» Preparando o Ambiente
Antes de criar endpoints e manipular despesas, precisamos preparar nosso ambiente de desenvolvimento. Não se preocupe, vamos fazer de forma råpida, organizada e sem complicaçÔes.
1. Instalando Python
Se vocĂȘ ainda nĂŁo tem Python instalado, baixe a versĂŁo mais recente no site oficial.
Para verificar se estĂĄ tudo certo, abra o terminal e digite:
python --version
VocĂȘ deve ver a versĂŁo instalada. Se sim, estamos prontos para seguir.
2. Criando o ambiente virtual
Um ambiente virtual mantĂ©m todas as dependĂȘncias da sua API isoladas, evitando conflitos com outros projetos.
No terminal, rode:
python -m venv venv
Ative o ambiente virtual:
- Windows:
venv\Scripts\activate
- Mac/Linux:
source venv/bin/activate
3. Instalando as bibliotecas necessĂĄrias
Para nossa API de gastos pessoais, vamos usar Flask, uma biblioteca leve e fĂĄcil de aprender:
pip install Flask
4. Estrutura inicial do projeto
Organizar arquivos desde o inĂcio faz muita diferença. Aqui estĂĄ um exemplo simples, mas funcional:
controle_gastos_api/
â
âââ app.py # arquivo principal da API
âââ despesas.py # lĂłgica das despesas (CRUD)
âââ requirements.txt # lista de dependĂȘncias
âââ venv/ # ambiente virtual
app.py
vai conter a configuração da API e os endpoints.
despesas.py
vai armazenar nossa lĂłgica de gerenciamento de despesas.
requirements.txt
Ă© opcional, mas Ăștil para instalar dependĂȘncias rapidamente em outro computador.
5. Testando a instalação
Para garantir que tudo estĂĄ funcionando, rode:
python app.py
VocĂȘ deve ver algo como:
* Running on http://127.0.0.1:5000/
đ§âđ» Criando o Primeiro Endpoint
Chegou a parte mais divertida: colocar o Python para trabalhar. Vamos começar simples, com um Hello World, para garantir que nossa API estå respondendo corretamente.
1. CĂłdigo inicial em app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return {"mensagem": "OlĂĄ! Sua API de controle de gastos estĂĄ funcionando!"}
if __name__ == '__main__':
app.run(debug=True)
2. Explicando o cĂłdigo
from flask import Flask
: importa a biblioteca Flask.
app = Flask(__name__)
: cria a aplicação Flask.
@app.route('/')
: define o endpoint /
, ou seja, a raiz da API.
def hello()
: função que serå executada quando acessarmos o endpoint.
return {"mensagem": "..."}
: devolve um JSON com a mensagem.
app.run(debug=True)
: inicia o servidor local em modo de debug (ideal para desenvolvimento).
3. Testando
1.Salve o arquivo.
2.No terminal, dentro da pasta do projeto, rode:
python app.py
Abra o navegador ou use o Postman e acesse:
http://127.0.0.1:5000/
VocĂȘ verĂĄ:
{"mensagem": "OlĂĄ! Sua API de controle de gastos estĂĄ funcionando!"}
4. PrĂłximo passo
Agora que temos a base funcionando, podemos avançar para criar os endpoints da nossa API de Controle de Gastos Pessoais. Vamos aprender a adicionar, listar, atualizar e remover despesas de forma pråtica e organizada.
đ° Estruturando a API de Controle de Gastos Pessoais
Nossa API vai permitir:
Adicionar despesas
Listar todas as despesas
Atualizar despesas existentes
Remover despesas
Tudo usando dados em memĂłria (listas e dicionĂĄrios), ideal para iniciantes, mas seguindo boas prĂĄticas que programadores experientes vĂŁo reconhecer.
1. Criando a estrutura de dados (despesas.py
)
# despesas.py
despesas = []
id_contador = 1
def adicionar_despesa(descricao, valor, categoria):
global id_contador
despesa = {
"id": id_contador,
"descricao": descricao,
"valor": valor,
"categoria": categoria
}
despesas.append(despesa)
id_contador += 1
return despesa
def listar_despesas():
return despesas
def atualizar_despesa(id, descricao=None, valor=None, categoria=None):
for despesa in despesas:
if despesa["id"] == id:
if descricao:
despesa["descricao"] = descricao
if valor:
despesa["valor"] = valor
if categoria:
despesa["categoria"] = categoria
return despesa
return None
def remover_despesa(id):
global despesas
for despesa in despesas:
if despesa["id"] == id:
despesas = [d for d in despesas if d["id"] != id]
return True
return False
2. Criando os endpoints em app.py
from flask import Flask, request, jsonify
from despesas import adicionar_despesa, listar_despesas, atualizar_despesa, remover_despesa
app = Flask(__name__)
@app.route('/despesas', methods=['GET'])
def get_despesas():
return jsonify(listar_despesas())
@app.route('/despesas', methods=['POST'])
def post_despesa():
dados = request.get_json()
despesa = adicionar_despesa(dados["descricao"], dados["valor"], dados["categoria"])
return jsonify(despesa), 201
@app.route('/despesas/<int:id>', methods=['PUT'])
def put_despesa(id):
dados = request.get_json()
despesa = atualizar_despesa(id, dados.get("descricao"), dados.get("valor"), dados.get("categoria"))
if despesa:
return jsonify(despesa)
return jsonify({"erro": "Despesa nĂŁo encontrada"}), 404
@app.route('/despesas/<int:id>', methods=['DELETE'])
def delete_despesa(id):
if remover_despesa(id):
return jsonify({"mensagem": "Despesa removida com sucesso"})
return jsonify({"erro": "Despesa nĂŁo encontrada"}), 404
if __name__ == '__main__':
app.run(debug=True)
3. Explicando os endpoints
GET /despesas: retorna todas as despesas cadastradas.
POST /despesas: adiciona uma nova despesa.
Corpo da requisição (JSON):
{
"descricao": "Almoço",
"valor": 45.50,
"categoria": "Alimentação"
}
PUT /despesas/<id>: atualiza uma despesa existente.
DELETE /despesas/<id>: remove uma despesa pelo ID.
4. Testando a API
Use Postman ou curl para enviar requisiçÔes.
Experimente adicionar vĂĄrias despesas, listar, atualizar e remover.
Observe as respostas em JSON e os cĂłdigos de status HTTP (200, 201, 404).
đ Boas PrĂĄticas
Criar uma API que funciona é apenas o começo. Uma API bem estruturada e organizada faz toda a diferença quando o projeto cresce ou quando outros desenvolvedores precisam trabalhar com seu código. Aqui estão algumas pråticas que vão deixar sua API de Controle de Gastos Pessoais mais profissional e escalåvel.
1. Modularização do Código
Separe a lógica da aplicação em arquivos diferentes.
Exemplo: app.py
para endpoints e despesas.py
para funçÔes de CRUD.
Vantagem: facilita manutenção, testes e futuras expansÔes.
2. Validação de Dados
Sempre valide o que o usuårio envia. Isso evita erros e mantém a API segura.
Exemplo: verificar se o valor
é numérico e positivo antes de adicionar uma despesa.
if not isinstance(dados["valor"], (int, float)) or dados["valor"] <= 0:
return jsonify({"erro": "Valor invĂĄlido"}), 400
3. Respostas e CĂłdigos HTTP Consistentes
Use sempre cĂłdigos de status corretos:
200 OK
para requisiçÔes bem-sucedidas.
201 Created
ao criar um novo recurso.
404 Not Found
quando um recurso nĂŁo existir.
400 Bad Request
para dados invĂĄlidos.
Isso ajuda quem consome a API a entender rapidamente o que aconteceu.
4. Mensagens de Erro Claras
Evite mensagens genéricas. Explique o problema.
Exemplo: "erro": "Despesa nĂŁo encontrada"
Ă© muito melhor que "erro": "falha"
5. Comentårios e Documentação
Comente funçÔes complexas e endpoints.
Documente o que cada rota faz e quais parĂąmetros espera.
Futuramente, vocĂȘ pode adicionar Swagger/OpenAPI para gerar documentação automĂĄtica.
6. Preparando para o Futuro
Quando quiser evoluir, vocĂȘ pode:
Substituir o armazenamento em memĂłria por um banco de dados real (SQLite, PostgreSQL).
Adicionar autenticação de usuårios com JWT.
Migrar para FastAPI para melhorar performance e documentação automåtica.
Seguindo essas prĂĄticas, sua API jĂĄ estarĂĄ no nĂvel de um projeto profissional, mesmo sendo simples e didĂĄtica.
đĄ ConclusĂŁo
Chegamos ao final desta jornada e agora vocĂȘ tem em mĂŁos uma API de Controle de Gastos Pessoais funcional, organizada e testĂĄvel. Começamos do zero, entendendo conceitos essenciais de APIs, mĂ©todos HTTP, JSON e boas prĂĄticas de desenvolvimento. Criamos endpoints para adicionar, listar, atualizar e remover despesas, testamos tudo localmente e ainda aprendemos como preparar o projeto para evoluçÔes futuras, como banco de dados, autenticação e deploy online.
O mais importante Ă© que vocĂȘ nĂŁo apenas leu sobre APIs, mas construiu uma API real e prĂĄtica. Esse tipo de aprendizado Ă© o que diferencia quem apenas consome conteĂșdo de quem realmente sabe programar e criar soluçÔes.
Agora Ă© com vocĂȘ: experimente adicionar novos recursos, conectar sua API a um banco de dados, proteger endpoints com autenticação, escrever testes automatizados e atĂ© publicar sua API online. Cada passo que vocĂȘ der vai transformar esse projeto de aprendizado em algo profissional e escalĂĄvel.
Lembre-se, aprender programação Ă© muito mais sobre fazer do que sĂł ler. EntĂŁo abra o editor, execute seu cĂłdigo e continue experimentando. Sua API de Controle de Gastos Pessoais Ă© sĂł o começo de projetos ainda mais incrĂveis que vocĂȘ pode criar com Python.
referĂȘncias
Api no Python - https://www.hashtagtreinamentos.com/api-no-python
Como usar APIs no Python - https://www.datacamp.com/pt/tutorial/python-api
Como criar API de JSON com Python - https://www.freecodecamp.org/portuguese/news/como-criar-uma-api-de-json-com-python/