Executando verificação de segurança...
12

FastAPI (Python) - Primeira API - [BUSCANDO FEEDBACKS]

Opa, pessoal! Tudo bem?

Comecei a aprender Python e estou iniciando minha carreira como dev. Decidi focar na linguagem Python e, até o momento, estou estudando mais a parte de backend.

Criei minha primeira API usando FastAPI, com autenticação via JWT e integração com o banco de dados PostgreSQL (que foi executado via container na minha máquina). Nada muito fora do comum para quem está começando, eu imagino.

Gostaria da opinião de pessoas que já estão na área sobre como está a minha API. Basicamente, desenvolvi um sistema de login e um CRUD simples.

Todo feedback é importante para mim! :)

Repositório: https://github.com/Kelabr/profindustry

Muito obrigado pela atenção!

Carregando publicação patrocinada...
2

Opa, meu querido, algumas dicas aqui:

  • Seus endpoints não têm um ResponseModel, então você não tá validando propriamente as responses. Faz sentido ver exatamente o que você quer passar pro Front, criar um Schema do Pydantic com isso e colocar como ResponseModel nos endpoints (bom por segurança, passar só a quantidade de dados necessária e várias outras coisas)
  • Adicione o __pycache__ no .gitignore
  • Você tem um pyproject.toml, pode colocar suas dependências lá, deletar o requirements.txt e usar um uv da vida
  • __init__ pra criar módulos pode melhorar bastante as coisas, você deixa no init só o que é necessário e o resto fica abstraído nos arquivos dos módulos
  • Pode fazer sentido usar async, já que as operações são I/O bound (ficam a maior parte do tempo esperando coisas - como o banco de dados)
  • Não entendi exatamente esse aqui
  • Não tem um GET pro endpoint de users

Além disso cria um bom README, é muito importante!

Se quiser pegar inspiração em algumas coisas, eu fiz um boilerplate aqui com bastante coisa.

Pra um jeito mais fácil de fazer queries, eu criei o FastCRUD. Se quiser um painel de admin, tem também o CRUDAdmin.

Parabéns pelo projeto!

1
1

Não é uma crítica ao teu projeto, mas sim para futuros estudos, principalmente se for enveredar por conexões ASYNC no FastAPI e toma cuidado com vazamento de memória: sugiro dar uma olhada em libs como tenacity, httpx, uvicorn e gunicorn.

1

Chegou a ver já o curso do Dunossauro? Talvez possa te ajudar
https://fastapidozero.dunossauro.com/estavel/

Olhando sua API.
Colocar um .gitignore pycache não deve ir pro repositório.
Não precisa usar o dotenv por que o FastAPI tem seu próprio sistema de configurações, eu particularmente não uso ele, mas no teu caso talvez fosse melhor.
Você se conectou direto no psycopg, particularmente prefiro usar o sqlalchemy core por que ele gerencia as conexões, se não quiser usar o ORM não tem problema pois o CORE você faz as queries como tu fez mesmo, o importante é ter um gerenciamento mais robusto.
Vale a pena usar o poetry para gerenciar o seu requirements.txt e sua virtual env.
Vale a pena também investir em estudar como fazer os testes da sua API usando pytest

De modo geral é isso, espero ter ajudado.
Se quiser dar uma olhada eu tenho um backend do meu principal projeto open source em FastAPI pode dar uma conferida aqui. Colaborações são sempre bem vindas =D

2

Eu comecei a ver o curso dele e fui pegando o que eu achava legal, não conclui ele porque eu sou bem ansioso e já quis tentar experimentar as coisas e comecei a fazer a minha API hahah, eu aprendo melhor quebrando a cara/ fazendo. Eu preferi não usar o poetry para aprender no python "puro" para ter uma base mais solida, sem usar muitos "frameworks" ou "bibliotecas". Muito obrigado pelo feedback meu amigo!! :)