Nos últimos anos, o FastAPI, um framework Python para o desenvolvimento de APIs web, tem ganhado notável popularidade.
As APIs (Interfaces de Programação de Aplicações) são fundamentais na arquitetura moderna, permitindo que as aplicações sejam divididas em módulos independentes e desacoplados. Essa abordagem facilita a criação rápida de aplicações e simplifica sua manutenção.
Assim, se o seu objetivo é usar Python para o desenvolvimento web, aprender FastAPI é uma excelente ideia. Este artigo abordará os conceitos básicos desta ferramenta.
O que é FastAPI?
O FastAPI é um framework web baseado em Python que tem atraído grande atenção. Sua estrutura de desenvolvimento é similar ao Flask, que era a opção mais popular para quem buscava aprender desenvolvimento web em Python.
A facilidade de uso e a documentação clara do FastAPI são notáveis. Empresas líderes como Microsoft, Netflix e Uber utilizam o FastAPI.
Embora o foco principal do FastAPI seja a criação de APIs, suas funcionalidades vão além. Ele também pode ser usado para integrar o WSGI, embora essa característica seja pouco conhecida pela maioria dos usuários.
O propósito primário do FastAPI é a criação eficiente de endpoints de API. Isso pode ser feito tanto retornando dados de dicionários Python em formato JSON quanto usando a interface interativa Swagger do OpenAPI.
O FastAPI não se limita a APIs. Ele é versátil, podendo ser utilizado para diversas tarefas de um framework web, desde o fornecimento de páginas web com o template engine Jinja2 até o suporte a aplicações baseadas em WebSockets.
Abaixo estão algumas vantagens do FastAPI:
- O FastAPI permite a validação do tipo de dados especificado pelo desenvolvedor, inclusive em consultas JSON aninhadas.
- Ele oferece o recurso de preenchimento automático, que agiliza o desenvolvimento, reduzindo tempo e esforço.
- É compatível com OpenAPI e JSON Schema, facilitando a validação e anotação de documentos JSON.
- O FastAPI permite a criação rápida de APIs GraphQL usando a biblioteca Python graphene-python.
- O FastAPI oferece suporte a OAuth 2.0 e provedores externos.
A seguir, algumas desvantagens do FastAPI:
- Por ser um framework relativamente novo, a comunidade de suporte do FastAPI ainda é pequena, com poucos materiais de aprendizado externos, como livros, cursos ou tutoriais.
- A necessidade de integrar todos os componentes no FastAPI pode resultar em um arquivo principal extenso e complexo.
Recursos exclusivos do FastAPI
Estes são alguns dos recursos exclusivos que tornam o FastAPI um framework web Python de destaque:
- Alto desempenho: O FastAPI oferece um desempenho superior em relação a outros frameworks Python. Sua arquitetura focada em velocidade o torna uma opção preferencial, aproveitando as funcionalidades do Starlette para criar APIs e gerar código de alta qualidade.
- Desenvolvimento rápido: A utilização de códigos prontos para produção elimina a necessidade de criar tudo do zero, acelerando o processo de desenvolvimento entre 200% e 300%. O FastAPI, baseado no Starlette, possui recursos para validação e serialização de dados, além de incluir todos os componentes necessários, reduzindo o tempo de codificação.
- Redução de bugs: O recurso de preenchimento automático insere a maior parte do código, diminuindo a ocorrência de erros e melhorando a qualidade do produto final.
- Facilidade de aprendizado: O FastAPI utiliza o Python moderno sem introduzir novas sintaxes. Baseado no Python 3.6, ele é acessível a qualquer pessoa com bom domínio da linguagem.
- Esforço mínimo: O FastAPI gera automaticamente a documentação OpenAPI com pouco esforço do desenvolvedor, acessível no diretório /doc da aplicação. A documentação fornece informações detalhadas sobre endpoints de API, códigos de retorno, parâmetros de resposta e outros detalhes.
- Suporte ao editor: Todos os componentes são projetados com preenchimento automático, simplificando a produção de código. A documentação interativa também permite testar o código diretamente no navegador.
- Padrões abertos: O framework web Python FastAPI é compatível com OpenAPI (anteriormente conhecido como Swagger), um grande benefício para a criação de APIs.
Instalação do FastAPI
A seguir, os passos para instalar o FastAPI no Linux ou Windows.
#1. Instalação do FastAPI no Linux
Instale o Python 3 no Linux com o seguinte comando:
sudo apt install python3
Instale o pip no Linux com o comando abaixo:
sudo apt install python3-pip

Em seguida, instale o FastAPI no Linux:
pip install fastapi

Você também precisará de um servidor ASGI. Instale o uvicorn usando pip:
pip install "uvicorn[standard]"

#2. Instalação do FastAPI no Windows
Instale o Python 3 no Windows através da Microsoft Store. Isso também instalará o pip.

Em seguida, instale o FastAPI no Windows:
pip install fastapi

Finalmente, instale o servidor ASGI uvicorn:
pip install "uvicorn[standard]"

Aplicações modernas do FastAPI
Aqui estão algumas aplicações modernas do FastAPI:
Documentação automatizada
Documentar tipos de API e endpoints é essencial. O FastAPI soluciona isso utilizando OpenAPI, Swagger UI e ReDoc, que são automaticamente incluídos. Isso permite que você se concentre no código sem se preocupar com a configuração de ferramentas.
Python tipado
O FastAPI usa declarações de tipo do Python 3.6 (graças ao Pydantic), permitindo especificar o tipo de uma variável. O framework se beneficia disso, oferecendo excelente suporte ao editor com preenchimento automático eficiente.
Validação
O Pydantic já integra a validação ao framework, permitindo validações de tipos Python padrão e validações de campos personalizados.
Segurança e autenticação
Essencial em qualquer API, o FastAPI oferece suporte a HTTP Basic, tokens OAuth2 (tokens JWT) e chaves de API por cabeçalho.
Natureza assíncrona
Por padrão, o FastAPI suporta endpoints assíncronos, tornando o código mais simples e eficiente, o que representa uma vantagem significativa em relação ao Flask.
FastAPI vs. Flask: Principais diferenças
Diferenças de uso
O FastAPI é um framework full-stack, oferecendo tudo o que você precisa para construir uma API. O Flask, por outro lado, é um micro framework que não inclui todas as funcionalidades do FastAPI. O Flask pode ser útil para prototipagem ou para criar aplicações web simples rapidamente.
O Flask é mais adequado para prototipar novas ideias e aplicações, enquanto o FastAPI é ideal para a criação de APIs, permitindo construir rapidamente um servidor back-end sem grande conhecimento de codificação.
Sites e aplicações web de pequena escala
O FastAPI é fácil de usar e adequado para desenvolvimento web e de aplicações de pequena escala. Ele inclui uma camada ORM que gerencia objetos de dados, permitindo acesso rápido através da codificação. A camada ORM mantém o banco de dados atualizado automaticamente, dispensando a atualização manual quando informações são adicionadas, modificadas ou excluídas.
WSGI x ASGI
Uma diferença fundamental é que o Flask utiliza WSGI para sua interface padrão, enquanto o FastAPI usa ASGI. O WSGI processa solicitações de forma síncrona, sequencialmente. Já o ASGI lida com as solicitações de forma assíncrona, permitindo que as tarefas sejam concluídas em seu próprio ritmo, sem esperar umas pelas outras.
Comunidade
Outra diferença está na comunidade. O Flask possui uma comunidade mais antiga e estabelecida, o que significa mais documentação e suporte externo. O FastAPI é um projeto mais novo, com uma comunidade em crescimento, o que implica menos ajuda externa, embora a documentação seja suficiente.
A tabela abaixo resume as diferenças entre FastAPI e Flask:
| FastAPI | Flask |
| Validação de dados integrada. | Não possui validação de dados. |
| Suporte a tarefas assíncronas. | Não possui suporte a tarefas assíncronas. |
| Implementa especificações ASGI. | Suporta aplicações WSGI. |
| Suporte automático a documentos. | Suporte manual a documentos. |
| Mensagens de erro em JSON. | Mensagens de erro em HTML. |
| Comunidade de suporte menor. | Comunidade de suporte mais ampla. |
FastAPI ou Flask: qual escolher?
Tanto FastAPI quanto Flask permitem configurar servidores web Python e aplicações de ciência de dados rapidamente. Ambos exigem esforço similar para implantação, mas qual é o melhor framework para o seu projeto?
O FastAPI é a melhor opção quando velocidade e desempenho são prioridade. Este framework é ideal para criar CDNs e lidar com tráfego significativo. O FastAPI oferece uma estrutura pronta para uso que economiza tempo e otimiza o processo de desenvolvimento.
O FastAPI é superior ao Flask na criação de APIs, especialmente ao considerar microsserviços. O Flask é mais adequado se você já possui ferramentas construídas em torno desse framework.
Conclusão
O FastAPI oferece velocidade e desempenho superiores, sendo ideal para a construção de redes de distribuição de conteúdo e para lidar com tráfego intenso. Seu framework inovador e modelo de projeto otimizam o tempo de desenvolvimento.
O Flask pode ser uma opção melhor para a criação de APIs, especialmente em microsserviços. Se você já utiliza o Flask extensivamente, ele pode ser a escolha mais adequada.
Além disso, você pode explorar outros frameworks Python populares para a criação de APIs.