Pular para conteúdo

FastAPI do ZERO

Olá, boas vindas ao curso de FastAPI!

A nossa intenção neste curso é facilitar o aprender a desenvolver APIs usando o FastAPI. Vamos explorar como integrar bancos de dados, criar testes e um sistema básico de autenticação. Tudo isso para oferecer uma boa base para quem quer trabalhar com essa tecnologia. A nossa forma de apresentar o curso é prática e cheia de informações. Ela busca trazer o que precisa para criar os nossos próprios projetos.

Esse material em texto está em fase de desenvolvimento. Caso encontre algum erro, ficarei extremamente feliz que você me notifique ou envie um Pull Request! Problemas já conhecidos.

Algumas aulas já estão em suas versões finais outras ainda faltam ser revisadas em questões de texto/funcionalidades. Caso queria acompanhar as revisões, elas estão acontecendo nessa issue.

O que é FastAPI?

FastAPI é um framework Python moderno, projetado para simplicidade, velocidade e eficiência. A combinação de diversas funcionalidades modernas do Python como anotações de tipo e suporte a concorrência, facilitando o desenvolvimento de APIs.

Sobre o curso

Este curso foi desenvolvido para oferecer uma experiência prática no uso do FastAPI, uma das ferramentas mais modernas para construção de APIs. Ao longo do curso, o objetivo é que você obtenha uma compreensão das funcionalidades do FastAPI e de boas práticas associadas a ele.

O projeto central do curso será a construção de um gerenciador de tarefas (uma lista de tarefas), começando do zero. Esse projeto incluirá a implementação da autenticação do usuário e das operações CRUD completas.

Para a construção do projeto, serão utilizadas as versões mais recentes das ferramentas, disponíveis em 2024, como a versão 0.100 do FastAPI, a versão 2.0 do Pydantic, a versão 2.0 do SQLAlchemy ORM, além do Python 3.11 e do Alembic para gerenciamento de migrações.

Além da construção do projeto, o curso também incluirá a prática de testes, utilizando o pytest. Essa abordagem planeja garantir que as APIs desenvolvidas sejam não apenas funcionais, mas também robustas e confiáveis.

O que você vai aprender?

Aqui está uma visão geral dos tópicos que abordaremos neste curso:

  1. Configurando um ambiente de desenvolvimento para FastAPI: começaremos do absoluto zero, criando e configurando nosso ambiente de desenvolvimento.

  2. Primeiros Passos com FastAPI e TDD: após configurar o ambiente, mergulharemos na estrutura básica de um projeto FastAPI e faremos uma introdução detalhada ao Test Driven Development (TDD).

  3. Modelagem de Dados com Pydantic e SQLAlchemy: aprenderemos a criar e manipular modelos de dados utilizando Pydantic e SQLAlchemy, dois recursos que levam a eficiência do FastAPI a outro nível.

  4. Autenticação e Autorização em FastAPI: construiremos um sistema de autenticação completo, para proteger nossas rotas e garantir que apenas usuários autenticados tenham acesso a certos dados.

  5. Testando sua Aplicação FastAPI: faremos uma introdução detalhada aos testes de aplicação FastAPI, utilizando as bibliotecas pytest e coverage.

  6. Dockerizando e Fazendo Deploy de sua Aplicação FastAPI: por fim, aprenderemos como "dockerizar" nossa aplicação FastAPI e fazer seu deploy utilizando Fly.io.

💰 Esse curso é gratuito?

SIM! Esse curso foi todo desenvolvido de forma aberta e com a ajuda financeira de pessoas incríveis. Caso você sinta vontade de contribuir, você pode me pagar um café por pix (pix.dunossauro@gmail.com) ou apoiar a campanha recorrente de financiamento coletivo da live de python que é o que paga as contas aqui de casa.

Onde o curso será disponibilizado?

Esse material será disponibilizado de três formas diferentes:

  1. Em livro texto: todo o material está disponível nessa página;
  2. Em formato de vídeo: todas as aulas serão disponibilizadas em formato de vídeo em meu canal do YouTube para quem prefere assistir ao ler;
  3. Em aulas síncronas ao vivo: para quem prefere o compromisso de acompanhar em grupo. Datas já disponíveis

Esse material está em fase de desenvolvimento e todas as aulas estarão disponíveis no meu canal do YouTube. Você pode conferir outros materiais disponíveis por lá enquanto os vídeos não saem, ou se inscrever para ser notificado quando os vídeos saírem!

http://youtube.com/@dunossauro

Os links para as playlists dos vídeos e das aulas ao vivo estão aqui quando disponibilizadas!

Pré-requisitos

Para aproveitar ao máximo este curso, é recomendado que você tenha algum conhecimento prévio de Python. Além disso, algum entendimento básico de desenvolvimento web e APIs RESTful será útil, mas não essencial, pois a abordagem deste curso é prática e centrada em um projeto concreto. Por meio de exemplos reais e instruções passo a passo, você terá a oportunidade de acompanhar o processo de construção de uma aplicação real. Mesmo que os conceitos de desenvolvimento web sejam novos para você, a ênfase na aplicação prática e a estrutura detalhada do curso facilitarão o entendimento e a aplicação dessas habilidades até o fim do processo.

Caso esteja iniciando seus estudos em Python!

Caso você ainda não se sinta uma pessoa preparada, ou caiu aqui sem saber exatamente o que esperar. Temos um pequeno curso introdutório. Destinado aos primeiros passos com python.

Link direto

Também temos uma live focada em dicas para iniciar os estudos em python

Link direto

Ou então a leitura do livro Pense em python

Aulas

  1. Configurando o Ambiente de Desenvolvimento
  2. Introdução ao desenvolvimento WEB
  3. Estruturando seu Projeto e Criando Rotas CRUD
  4. Configurando Banco de Dados e Gerenciando Migrações com Alembic
  5. Integrando Banco de Dados a API
  6. Autenticação e Autorização
  7. Refatorando a Estrutura do Projeto
  8. Tornando o sistema de autenticação robusto
  9. Criando Rotas CRUD para Tarefas
  10. Dockerizando a nossa aplicação e introduzindo o PostgreSQL
  11. Automatizando os testes com integração contínua
  12. Fazendo o deploy no Fly.io
  13. Despedida e próximos passos

🦖 Quem vai ministrar essas aulas?

Prazer! Eu me chamo Eduardo. Mas as pessoas me conhecem na internet como @dunossauro.

Uma fotografia minha, Dunossauro, sentado em um banco com um por do sol ao fundo

Sou um programador Python muito empolgado e curioso. Toco um projeto pessoal chamado Live de Python há quase 7 anos. Onde conversamos sobre tudo e mais um pouco quando o assunto é Python.

Esse projeto que estamos desenvolvendo é um pedaço, um projeto, de um grande curso de FastAPI que estou montando. Espero que você se divirta ao máximo com a parte prática enquanto escrevo em mais detalhes todo o potencial teórico que lançarei no futuro!

Caso queira saber mais sobre esse projeto completo.

🧐 Revisão e contribuições

Esse material contou com a revisão e contribuições inestimáveis de pessoas incríveis:

@adorilson, @aguynaldo, @alphabraga, @azmovi, @bugelseif, @gabrielhardcore, @gbpagano, @henriqueccda, @henriquesebastiao, @ig0r-ferreira, @ivansantiagojr, @jlplautz, @jonathanscheibel, @julioformiga, @lbmendes, @lucasmpavelski, @matheusalmeida28, @me15degrees, @mmaachado, @ricardo-emanuel01, @rodbv, @rodrigosbarretos, @taconi, @vcwild, @williangl

Muito obrigado! ❤

📖 Licença

Todo esse curso foi escrito e produzido por Eduardo Mendes (@dunossauro).

Todo esse material é gratuito e está sob licença Creative Commons BY-NC-SA. O que significa que:

  • Você pode copiar e reproduzir esse material em qualquer meio e em qualquer formato;
  • Você pode adaptar esse material e construir outros materiais usando esse material.

Pontos de atenção:

  • Você precisa dar os devidos créditos a esse material onde for usar ou adaptar;
  • Você não pode usar para fins comerciais. Como vender ou usar para obter vantagens comerciais;
  • Todo o material derivado desse material deve ser redistribuído com a licença CC BY-NC-SA.

🧰 Ferramentas necessárias para acompanhar o curso

  1. Um editor de texto ou IDE de sua escolha. Estou usando o GNU/Emacs enquanto escrevo as aulas;
  2. Um terminal. Todos os exemplos do curso são executados e explicados no terminal. Você pode usar o que se sentir mais a vontade e for compatível com seu sistema operacional;
  3. Ter o interpretador Python instalado em uma versão igual ou superior a 3.11
  4. Uma conta no Github: para podermos testar com Github Actions;
  5. Uma conta no Fly.io: ferramenta que usaremos para fazer deploy.

🔧 Ferramentas de apoio

Toda essa página foi feita usando as seguintes bibliotecas:

Para os slides:

📁 Repositório

O versionamento de tudo está sendo feito no repositório do curso Github

🚀 Deploy

Os deploys das páginas estáticas geradas pelo MkDocs estão sendo feitos no Netlify

Conclusão

Neste curso, a intenção é fornecer uma compreensão completa do framework FastAPI, utilizando-o para construir uma aplicação de gerenciamento de tarefas. O aprendizado será focado na prática, e cada conceito será acompanhado por exemplos e exercícios relevantes.

A jornada começará com a configuração do ambiente de desenvolvimento e introdução ao FastAPI. Ao longo das aulas, abordaremos tópicos como autenticação, operações CRUD, testes com pytest e deploy. A ênfase será colocada na aplicação de boas práticas e no entendimento das ferramentas e tecnologias atualizadas, incluindo as versões mais recentes do FastAPI, Pydantic, SQLAlchemy ORM, Python e Alembic.

Este conteúdo foi pensado para auxiliar na compreensão de como criar uma API eficiente e confiável, dando atenção a aspectos importantes como testes e integração com banco de dados.

Nos vemos na primeira aula. ❤

F.A.Q.

Perguntas frequentes que me fizeram durante os vídeos: