Documentação interativa da API e navegação web da interface de usuário. Como o framework é baseado no OpenAPI, há várias opções, 2 incluídas por padrão.
Swagger UI, com navegação interativa, chame e teste sua API diretamente do navegador.
Tudo é baseado no padrão das declarações de tipos do Python 3.8 (graças ao Pydantic). Nenhuma sintaxe nova para aprender. Apenas o padrão moderno do Python.
Se você precisa refrescar a memória rapidamente sobre como usar tipos do Python (mesmo que você não use o FastAPI), confira esse rápido tutorial: Tipos do Python.
Você escreve Python padrão com tipos:
fromdatetimeimportdatefrompydanticimportBaseModel# Declare uma variável como str# e obtenha suporte do editor dentro da funçãodefmain(user_id:str):returnuser_id# Um modelo do PydanticclassUser(BaseModel):id:intname:strjoined:date
Passe as chaves e valores do dicionário second_user_data diretamente como argumentos chave-valor, equivalente a: User(id=4, name="Mary", joined="2018-11-30")
Todo o framework foi projetado para ser fácil e intuitivo de usar, todas as decisões foram testadas em vários editores antes do início do desenvolvimento, para garantir a melhor experiência de desenvolvimento.
Você terá completação do seu código que você poderia considerar impossível antes. Como por exemplo, a chave price dentro do corpo JSON (que poderia ter sido aninhado) que vem de uma requisição.
Sem a necessidade de digitar nomes de chaves erroneamente, ir e voltar entre documentações, ou rolar pela página para descobrir se você utilizou username or user_name.
Há padrões sensíveis para tudo, com configurações adicionais em todos os lugares. Todos os parâmetros podem ser regulados para fazer o que você precisa e para definir a API que você necessita.
Segurança e autenticação integradas. Sem nenhum compromisso com bancos de dados ou modelos de dados.
Todos os esquemas de seguranças definidos no OpenAPI, incluindo:
HTTP Basic.
OAuth2 (também com tokens JWT). Confira o tutorial em OAuth2 com JWT.
Chaves de API em:
Headers.
parâmetros da Query.
Cookies etc.
Além disso, todos os recursos de seguranças do Starlette (incluindo cookies de sessão).
Tudo construído como ferramentas e componentes reutilizáveis que são fáceis de integrar com seus sistemas, armazenamento de dados, banco de dados relacionais e não-relacionais etc.
Ou, de outra forma, sem a necessidade deles, importe e use o código que precisar.
Qualquer integração é projetada para ser tão simples de usar (com dependências) que você pode criar um "plug-in" para suas aplicações com 2 linhas de código usando a mesma estrutura e sintaxe para as suas operações de caminho.
FastAPI é totalmente compatível com (e baseado no) Starlette. Então, qualquer código adicional Starlette que você tiver, também funcionará.
FastAPI é na verdade uma sub-classe do Starlette. Então, se você já conhece ou usa Starlette, a maioria das funcionalidades se comportará da mesma forma.
Com FastAPI, você terá todos os recursos do Starlette (já que FastAPI é apenas um Starlette com esteróides):
FastAPI é totalmente compatível com (e baseado no) Pydantic. Então, qualquer código Pydantic adicional que você tiver, também funcionará.
Incluindo bibliotecas externas também baseadas no Pydantic, como ORMs e ODMs para bancos de dados.
Isso também significa que em muitos casos você poderá passar o mesmo objeto que você receber de uma requisição diretamente para o banco de dados, já que tudo é validado automaticamente.
O mesmo se aplica no sentido inverso, em muitos casos você poderá simplesmente passar o objeto que você recebeu do banco de dados diretamente para o cliente.
Com FastAPI você terá todos os recursos do Pydantic (já que FastAPI utiliza o Pydantic para todo o controle dos dados):
Sem pegadinhas:
Sem novas definições de esquema de micro-linguagem para aprender.
Se você conhece os tipos do Python, você sabe como usar o Pydantic.
Vai bem com o/a seu/sua IDE/linter/cérebro:
Como as estruturas de dados do Pydantic são apenas instâncias de classes que você define, a auto completação, linting, mypy e a sua intuição devem funcionar corretamente com seus dados validados.
Rápido:
em benchmarks, o Pydantic é mais rápido que todas as outras bibliotecas testadas.
Valida estruturas complexas:
Use modelos hierárquicos do Pydantic, List e Dict do typing do Python, etc.
Validadores permitem que esquemas de dados complexos sejam limpos e facilmente definidos, conferidos e documentados como JSON Schema.
Você pode ter JSONs aninhados profundamente e tê-los todos validados e anotados.
Extensível:
Pydantic permite que tipos de dados personalizados sejam definidos ou você pode estender a validação com métodos em um modelo decorado com seu decorador de validador.