Article image
Alefe Paz
Alefe Paz22/08/2025 11:53
Compartilhe

🐍 API de Controle de Gastos Pessoais em Python: Aprenda Criando do Zero

  • #Python

image

🐍 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.

image

🧠 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.

image

đŸ’» 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/

image

đŸ§‘â€đŸ’» 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.

image

💰 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).

image

📝 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.

image

💡 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/

Compartilhe
ComentĂĄrios (6)
Alefe Paz
Alefe Paz - 27/08/2025 08:57

OlĂĄ, Willian! Tudo bem?

Se a ideia do projeto for algo mais simples assim como o meu artigo, recomendo vocĂȘ usar o Railway, que Ă© uma plataforma com uma interface mais amigĂĄvel de usar. É basicamente subir o seu cĂłdigo, configurar as variĂĄveis de ambiente e pronto. A railway gera automaticamente uma URL pĂșblica para vocĂȘ acessar o projeto jĂĄ no ar.

Willian Silva
Willian Silva - 27/08/2025 03:46

Poderia explicar também como fazer o Deploy?

Alefe Paz
Alefe Paz - 26/08/2025 08:50

Muito obrigado, DIO! Fico feliz em saber que o conteĂșdo conseguiu equilibrar acessibilidade para iniciantes e boas prĂĄticas para quem jĂĄ tem mais experiĂȘncia. 

Pra evoluir o projeto, eu começaria adicionando um banco de dados, tipo PostgreSQL, pra guardar tudo direitinho. Depois, colocaria autenticação pra cada usuårio ter seu próprio acesso. Mais pra frente, pensaria em migrar pra FastAPI, pra deixar tudo mais råpido e organizado.

DIO Community
DIO Community - 25/08/2025 14:31

Excelente trabalho, Alefe! Seu artigo Ă© um verdadeiro guia prĂĄtico para quem deseja aprender construindo algo Ăștil desde o primeiro passo. A clareza com que vocĂȘ explica os conceitos de API, o uso de Flask e a forma como organiza a lĂłgica do CRUD tornam o conteĂșdo acessĂ­vel para iniciantes, mas tambĂ©m valioso para quem jĂĄ tem mais experiĂȘncia e busca boas prĂĄticas para projetos reais.

Na DIO acreditamos muito nesse modelo de aprendizado baseado em prĂĄtica e evolução progressiva. O que vocĂȘ compartilhou mostra exatamente como transformar teoria em cĂłdigo que funciona, alĂ©m de abrir espaço para futuras melhorias como banco de dados, autenticação e atĂ© migração para frameworks mais robustos. Isso conecta diretamente com nosso propĂłsito de formar profissionais capazes de criar soluçÔes escalĂĄveis e relevantes.

Se vocĂȘ fosse evoluir esse projeto para o prĂłximo nĂ­vel, qual seria o primeiro recurso avançado que adicionaria Ă  sua API de controle de gastos?

Alefe Paz
Alefe Paz - 25/08/2025 08:19

Muito obrigado pelo seu feedback, Marcio!

Fico feliz em saber que a forma como organizei o conteĂșdo ajudou a tornar os conceitos mais claros. Acredito que mostrar desde a base atĂ© as boas prĂĄticas seja essencial para quem estĂĄ iniciando. Seu reconhecimento me motiva a continuar produzindo materiais ainda mais completos e Ășteis.

Marcio Gil
Marcio Gil - 24/08/2025 21:51

Excelente conteĂșdo!

👏 Gostei muito da forma como vocĂȘ estruturou a API, começando pelo conceito e chegando atĂ© as boas prĂĄticas. O destaque para modularização e consistĂȘncia dos cĂłdigos HTTP Ă© um ponto que muitos iniciantes deixam de lado, mas faz toda a diferença em projetos reais. Achei bacana tambĂ©m vocĂȘ mostrar como evoluir o projeto para banco de dados, autenticação e atĂ© FastAPI , isso dĂĄ visĂŁo de futuro para quem estĂĄ aprendendo. ParabĂ©ns pela didĂĄtica!