Ir para o conteúdo

FastAPI do ZERO

Caso prefira ver a apresentação do curso em vídeo

Esse aula ainda não está disponível em formato de vídeo, somente em texto ou live!

Aula Slides

Olá, boas vindas ao curso de FastAPI!

A nossa intenção neste curso é facilitar o aprendizado no desenvolvimento de APIs usando o FastAPI. Vamos explorar como integrar bancos de dados, criar testes e um sistema básico de autenticação com JWT. Tudo isso para oferecer uma boa base para quem quer trabalhar com desenvolvimento web com Python. A ideia desse curso é apresentar os conceitos de forma prática, construindo um projeto do zero e indo até a sua fase de produção.

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.115 do FastAPI, a versão 2.0+ do Pydantic, a versão 2.0+ do SQLAlchemy ORM, além do Python 3.11/3.12 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. Configuração do ambiente de desenvolvimento para FastAPI: começaremos do absoluto zero, criando e configurando nosso ambiente de desenvolvimento.

  2. Primeiros Passos com FastAPI e Testes: 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. Além de executá-los em um pipeline de integração contínua com github actions.

  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 aulas síncronas ao vivo: para quem prefere o compromisso de acompanhar em grupo. Datas já disponíveis;

    Playlist das Aulas síncronas (Ao vivo):

  3. Em formato de vídeo (assíncronas): todas as aulas serão disponibilizadas em formato de vídeo em meu canal do YouTube para quem prefere assistir ao ler. (Vídeos ainda não disponíveis)

Pré-requisitos

Para aproveitar ao máximo este curso, é recomendado que você já tenha algum conhecimento prévio em python, se pudesse listar o que considero importante para não se perder, os tópicos em python importantes são:

  • O funcionamento de funções: como criar e usar (referência);
  • O funcionamento das estruturas de dados: como listas, dicionários e etc;
  • Uma pitada sobre objetos: saber o que são métodos e atributos (referência);
  • Classes de dados: o funcionamento básico das dataclasses (referência).

As referências servem como base caso você ainda não tenha estudado esses assuntos

Alguns outros tópicos não relativos a python também serão abordados. Então é interessante que você tenha algum entendimento básico sobre:

  • Desenvolvimento Web e APIs RESTful: não essencial, pois iremos abordar, mas o quanto mais você souber melhor para acompanhar;
  • Banco de dados / SQL: Um conhecimento básico sobre criação e busca de dados usando SQL já o suficiente, embora esse tópico também seja como o anterior, quanto mais você souber melhor;
  • git: não nos aprofundaremos nesse tópico durante o curso, mas usaremos operações básicas de git (como commit e push);
  • docker: também não nos aprofundaremos nesse tópico e ele só será abordado nas aulas finais. Mas, também, só usaremos comandos básicos de docker e docker-compose.
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

Após todas as aulas, se você sentir que ainda quer evoluir mais e testar seus conhecimentos, temos um projeto final para avaliar o quanto você aprendeu.

🦖 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, @andrespp, @azmovi, @bugelseif, @FtxDante, @gabrielhardcore, @gbpagano, @henriqueccda, @henriquesebastiao, @ig0r-ferreira, @itsGab, @ivansantiagojr, @jlplautz, @jonathanscheibel, @jpsalviano, @julioformiga, @lbmendes, @lucasmpavelski, @lucianoratamero, @matheusalmeida28, @me15degrees, @mmaachado, @NatalNW7, @rennerocha, @ricardo-emanuel01, @rodbv, @rodrigosbarretos, @taconi, @vcwild, @williangl, @vdionysio

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: