Decidi aprender um pouco sobre Python. Mais especificamente, a construção de API HTTP com o framework FastAPI. Isto é realizada dentro do secuinte contexto:

  • eu tenho conhecimento prévio em lógica de programação
  • já domino conceitos complexos como orientação a objetos, testes, SOLID, multi threading, banco de dados, API web, entrega contínua, dentre vários outros
  • eu trabalho com Java há mais de 15 anos

Com isso, é de se esperar que eu não tenha problema em escrever um algoritmo em linguagem Python. De fato, não tenho, do ponto de vista da lógica de programação. A prática em lógica de programação permite construir algoritmos em qualquer linguagem, desde que o paradigma não seja muito diferente (por exemplo, programação funcional e estruturada tem uma forma de pensar um pouco diferente). Mesmo assim, a proeficiência em um contexto ajuda o aprendizado em outro.

Conheço pouco de Python, e estou me referindo à linguagem, à forma de trablhar com a plataforma, e as ferramentas disponíveis. Por exemplo, quando se trata de Java, o gerenciado de build em quase 100% dos casos é o Maven ou o Gradle. Qual é alternativa mais usada em Python, quais outras alternativas mais usadas? Em um projeto Java padrão, as bibliotecas vem, em geral, de um repositório chamado Maven Central. De onde vem as libs usadas no Python?

Questões que, para mim, são bem esclarecidas quando estou trabalhando com Java, no contexto do Python, eu não sei responder. No entanto, como mencionei, a proeficiência em um contexto ajuda outro. Para projetos com algum nível de complexidade, eu sei que preciso de algo para gerenciar tudo, criar a build, ligar as bibliotecas e versões delas, publicar o aplicativo, etc. Esse entedimento vem da minha experiência, e tudo isso é aproveitável em qualquer lugar.

Atualmente, os assistentes de código estão dominando o mercado. Não é produtivo um profissional, hoje em dia, trabalhar sem auxílio dessas ferramentas. Para estudar, elas são igualmente úteis. Para o aprendizado, muito mais que pedir para a ferramenta gerar uma API que atenda algumas funcionalidades, é necessário ter um olhar crítico sobre os resultados. Nesse sentido, para mim, e no contexto da plataforma Java, as ferramentas de IA atuam como aceleradoras da codificação, uma vez que eu sei o que precisa ser feito e, mais importante, como precisa ser feito.

Para Python, imagino que não é diferente. Vou continuar pedindo que a IA escreva código. Mas dessa vez, vou pedir alternativas de implementações, vou peguntar porque uma é melhor que a outra e, muito possivelmente, vou validar essas informações em outras fontes. Por exemplo, como é a melhor forma de estrutura os diretórios em uma aplicação Python com FastAPI, usamos camadas de abstração, controller, serviço, respositório? FastAPI é a melhor solução para determinado problema? São questões desse tipo que preciso saber responder para, futuramente, entregar soluções de qualidade (e assistidas por IA).

Objetivos

Meus estudos serão guiados pelos seguintes temas.

Conhecimento do FastAPI

Do site oficial:

FastAPI é um fremework web moderno e rápido (alta performance) para construção de APIs com os padrões do Python hints

Mas por que FastAPI, por que não usar outro? Honestamente, ainda não consigo oferecer uma resposta embasada em experiência. FastAPI é bastante usado e tem uma grande comunidade. Por hora, sigo com entendimento que FastAPI não é uma má escolha.

Existem outras alternativas. O ChatGPT construiu a seguinte tabela (que ainda vou validar com pesquisa extra):

Caso de usoDjangoFastAPIFlask
APIs REST⭐⭐⭐
Sistemas corporativos⭐⭐⭐⚠️⚠️
Microserviços⚠️⭐⭐⭐
CRUD rápido⭐⭐⭐⭐⭐
Protótipos⚠️⭐⭐⭐⭐⭐
Monolitos grandes⭐⭐⭐⚠️⚠️

Conhecimento em testes

Qualquer projeto profissional, com um mínimo de estrutura, carece de testes. Os projetos chegam em um ponto onde, para saúde do próprio projeto, da equipe, e da empresa, é muito difícil seguir sem testes. Esse momento onde os testes são necessários, chega muito rápido, geralmente com as primeiras linhas que executam qualquer coisas no projeto. A pergunta é, como fazer isso em Python?

Banco de dados

Como conectar em banco de dados usando Python? Existe algo específico do FastAPI, ou usamos uma solução padronizada por alguma lib famosa do Python, e que o FastAPI apenas faz uso? Em geralm aplicações não existem sem banco de dados, seja relacional, de documentos, grafos, etc. São muitas opeções, e todas precisam ser minimamente atendidas por Python com uso de alguma lib.

Python

Eu mencionei que não tenho muita prática com a linguagem Python. Embora hoje existam os assistentes de IA, como profissional, é necessário ter um olhar crítico sobre as soluções que são entregues. Apesar de qualquer auxílio, entendo que ainda é necessário ser capaz de lidar com recursos básicos de sintaxe e outros conceitos mais complexos.

Tenho um entendimento claro que esse conhecimento, em se tratando de linguagens de programação, só vem com a prática, colocando a mão na massa. Hoje em dia, no entanto, é necessário balancear essa necessidade com o uso de ferramentas de IA.

Python usa alguns conceitos/recursos que preciso conhecer melhor, como o pip e o virtual env. Embora eu saiba do que se trata, quero entender as minúncias e até onde eles podem ser usados. Coisas desse tipo são fixadas com o tempo e necessidade, também.

Olá, mundo!

Para isso, pedi ao plugin do Gemini para o PyCharm o seguinte:

Crie uma API web usando FastAPI e Python. Preciso de apenas um endpoint. Esse endpoint deve responder no path /hello_world?name=Welyab.

A resposta da API deve ser um JSON com o seguinte formato:

{
“name”: “Welyab”,
“message”: “Hello, world!”
}

De forma muito direta, ele criou o seguinte aquivo:

from fastapi import FastAPI

app = FastAPI()

@app.get("/hello_world")
def hello_world(name: str):
    return {
        "name": name,
        "message": "Hello, world!"
    }

A acrescentou as seguintes instruções:

Criei o arquivo main.py com o código da API usando FastAPI.

O endpoint /hello_world aceita um parâmetro de query name e retorna o JSON no formato solicitado. Para rodar a aplicação, você precisará ter o fastapi e o uvicorn instalados.

Se ainda não tiver, pode instalar com:

install fastapi uvicorn

E para iniciar o servidor:

uvicorn main:app –reload

Acesse http://127.0.0.1:8000/hello_world?name=Welyab para testar.

Eu instalei as dependências. Sem muitas surpresas, a aplicação funcionou de primeira!

Conclusão

A maturidade em engenharia de software é, em grande parte, transferível entre plataformas e linguagens. As boas práticas transitam entre as diferentes stacks. Conceitos fundamentais, como testes, podem ter maneiras completamente de diferentes de implementar, no entanto, não deixam de ser necessárias.

Embora a implementação do primeiro endpoint com FastAPI tenha sido simples e direta, bem trivial, na verdade, para quem já trabalha há anos com APIs web, o aprendizado mais valioso não está nesse “hello world”, mas nas questões que surgem a partir dele: como estruturar um projeto real, como gerenciar dependências e builds, como testar corretamente, como integrar bancos de dados, como garantir qualidade, segurança e manutenibilidade a médio e longo prazo. Essas são as mesmas perguntas que surgem em qualquer stack madura, e é justamente nelas que a experiência prévia em Java se mostra mais valiosa.

O uso de ferramentas de IA, nesse contexto, não substitui o conhecimento técnico, mas atua como um acelerador do aprendizado, desde que acompanhado de senso crítico. Questionar decisões, comparar alternativas, validar informações e entender os “porquês” continua sendo essencial para evitar soluções frágeis ou mal fundamentadas. Em Python, assim como em Java, escrever código funcional é apenas o primeiro passo, pois construir soluções robustas e sustentáveis exige entendimento profundo do ecossistema.

Portanto, este início com FastAPI não representa um ponto de chegada, mas o marco inicial de uma exploração mais ampla do mundo Python. A expectativa não é apenas aprender “como fazer”, mas entender “por que fazer assim”.

Categorized in:

Uncategorized,

Last Update: 22/12/2025