<em>Framework FastAPI, alta performance, fåcil de aprender, fåcil de codar, pronto para produção</em>
</p>
<p align="center">
-<a href="https://github.com/fastapi/fastapi/actions?query=workflow%3ATest" target="_blank">
- <img src="https://github.com/fastapi/fastapi/workflows/Test/badge.svg" alt="Test">
+<a href="https://github.com/fastapi/fastapi/actions?query=workflow%3ATest+event%3Apush+branch%3Amaster" target="_blank">
+ <img src="https://github.com/fastapi/fastapi/workflows/Test/badge.svg?event=push&branch=master" alt="Test">
</a>
-<a href="https://codecov.io/gh/fastapi/fastapi" target="_blank">
- <img src="https://img.shields.io/codecov/c/github/fastapi/fastapi?color=%2334D058" alt="Coverage">
+<a href="https://coverage-badge.samuelcolvin.workers.dev/redirect/fastapi/fastapi" target="_blank">
+ <img src="https://coverage-badge.samuelcolvin.workers.dev/fastapi/fastapi.svg" alt="Coverage">
</a>
<a href="https://pypi.org/project/fastapi" target="_blank">
<img src="https://img.shields.io/pypi/v/fastapi?color=%2334D058&label=pypi%20package" alt="Package version">
</a>
+<a href="https://pypi.org/project/fastapi" target="_blank">
+ <img src="https://img.shields.io/pypi/pyversions/fastapi.svg?color=%2334D058" alt="Supported Python versions">
+</a>
</p>
---
<!-- /sponsors -->
-<a href="https://fastapi.tiangolo.com/pt/fastapi-people/#patrocinadores" class="external-link" target="_blank">Outros patrocinadores</a>
+<a href="https://fastapi.tiangolo.com/fastapi-people/#sponsors" class="external-link" target="_blank">Outros patrocinadores</a>
## OpiniÔes
---
+"_Nós adotamos a biblioteca **FastAPI** para iniciar um servidor **REST** que pode ser consultado para obter **previsÔes**. [para o Ludwig]_"
+
+<div style="text-align: right; margin-right: 10%;">Piero Molino, Yaroslav Dudin, e Sai Sumanth Miryala - <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/" target="_blank"><small>(ref)</small></a></div>
+
+---
+
+"_A **Netflix** tem o prazer de anunciar o lançamento open-source do nosso framework de orquestração de **gerenciamento de crises**: **Dispatch**! [criado com **FastAPI**]_"
+
+<div style="text-align: right; margin-right: 10%;">Kevin Glisson, Marc Vilanova, Forest Monsen - <strong>Netflix</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072" target="_blank"><small>(ref)</small></a></div>
+
+---
+
"*Estou extremamente entusiasmado com o **FastAPI**. Ă tĂŁo divertido!*"
<div style="text-align: right; margin-right: 10%;">Brian Okken - <strong><a href="https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855" target="_blank">Python Bytes</a> podcaster</strong> <a href="https://twitter.com/brianokken/status/1112220079972728832" target="_blank"><small>(ref)</small></a></div>
---
-"*Nós adotamos a biblioteca **FastAPI** para criar um servidor **REST** que possa ser chamado para obter **prediçÔes**. [para o Ludwig]*"
+"_Se alguém estiver procurando construir uma API Python para produção, eu recomendaria fortemente o **FastAPI**. Ele é **lindamente projetado**, **simples de usar** e **altamente escalåvel**. Ele se tornou um **componente chave** para a nossa estratégia API first de desenvolvimento e estå impulsionando diversas automaçÔes e serviços, como o nosso Virtual TAC Engineer._"
-<div style="text-align: right; margin-right: 10%;">Piero Molino, Yaroslav Dudin e Sai Sumanth Miryala - <strong>Uber</strong> <a href="https://eng.uber.com/ludwig-v0-2/" target="_blank"><small>(ref)</small></a></div>
+<div style="text-align: right; margin-right: 10%;">Deon Pillsbury - <strong>Cisco</strong> <a href="https://www.linkedin.com/posts/deonpillsbury_cisco-cx-python-activity-6963242628536487936-trAp/" target="_blank"><small>(ref)</small></a></div>
---
## Instalação
-<div class="termy">
-
-```console
-$ pip install fastapi
-
----> 100%
-```
-
-</div>
-
-VocĂȘ tambĂ©m precisarĂĄ de um servidor ASGI para produção, tal como <a href="https://www.uvicorn.org" class="external-link" target="_blank">Uvicorn</a> ou <a href="https://github.com/pgjones/hypercorn" class="external-link" target="_blank">Hypercorn</a>.
+Crie e ative um <a href="https://fastapi.tiangolo.com/pt/virtual-environments/" class="external-link" target="_blank">ambiente virtual</a>, e entĂŁo instale o FastAPI:
<div class="termy">
```console
-$ pip install "uvicorn[standard]"
+$ pip install "fastapi[standard]"
---> 100%
```
</div>
+**Nota**: Certifique-se de que vocĂȘ colocou `"fastapi[standard]"` com aspas, para garantir que funcione em todos os terminais.
+
## Exemplo
### Crie
**Nota**:
-Se vocĂȘ nĂŁo sabe, verifique a seção _"In a hurry?"_ sobre <a href="https://fastapi.tiangolo.com/async/#in-a-hurry" target="_blank">`async` e `await` nas docs</a>.
+Se vocĂȘ nĂŁo sabe, verifique a seção _"Com pressa?"_ sobre <a href="https://fastapi.tiangolo.com/pt/async/#com-pressa" target="_blank">`async` e `await` nas docs</a>.
</details>
<div class="termy">
```console
-$ uvicorn main:app --reload
-
+$ fastapi dev main.py
+
+ âââââââââââ FastAPI CLI - Development mode ââââââââââââź
+ â â
+ â Serving at: http://127.0.0.1:8000 â
+ â â
+ â API docs: http://127.0.0.1:8000/docs â
+ â â
+ â Running in development mode, for production use: â
+ â â
+ â fastapi run â
+ â â
+ â°ââââââââââââââââââââââââââââââââââââââââââââââââââââââŻ
+
+INFO: Will watch for changes in these directories: ['/home/user/code/awesomeapp']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
-INFO: Started reloader process [28720]
-INFO: Started server process [28722]
+INFO: Started reloader process [2248755] using WatchFiles
+INFO: Started server process [2248757]
INFO: Waiting for application startup.
INFO: Application startup complete.
```
</div>
<details markdown="1">
-<summary>Sobre o comando <code>uvicorn main:app --reload</code>...</summary>
+<summary>Sobre o comando <code>fastapi dev main.py</code>...</summary>
-O comando `uvicorn main:app` se refere a:
+O comando `fastapi dev` lĂȘ o seu arquivo `main.py`, identifica o aplicativo **FastAPI** nele, e inicia um servidor usando o <a href="https://www.uvicorn.org" class="external-link" target="_blank">Uvicorn</a>.
-* `main`: o arquivo `main.py` (o "mĂłdulo" Python).
-* `app`: o objeto criado dentro de `main.py` com a linha `app = FastAPI()`.
-* `--reload`: faz o servidor recarregar após mudanças de código. Somente faça isso para desenvolvimento.
+Por padrĂŁo, o `fastapi dev` iniciarĂĄ com *auto-reload* habilitado para desenvolvimento local.
+
+VocĂȘ pode ler mais sobre isso na <a href="https://fastapi.tiangolo.com/pt/fastapi-cli/" target="_blank">documentação do FastAPI CLI</a>.
</details>
class Item(BaseModel):
name: str
price: float
- is_offer: Union[bool] = None
+ is_offer: Union[bool, None] = None
@app.get("/")
return {"item_name": item.name, "item_id": item_id}
```
-O servidor deverĂĄ recarregar automaticamente (porquĂȘ vocĂȘ adicionou `--reload` ao comando `uvicorn` acima).
+O servidor `fastapi dev` deverĂĄ recarregar automaticamente.
### Evoluindo a Documentação Interativa da API
Resumindo, vocĂȘ declara **uma vez** os tipos dos parĂąmetros, corpo etc. como parĂąmetros de função.
-VocĂȘ faz com tipos padrĂŁo do Python moderno.
+VocĂȘ faz isso com os tipos padrĂŁo do Python moderno.
VocĂȘ nĂŁo terĂĄ que aprender uma nova sintaxe, mĂ©todos ou classes de uma biblioteca especĂfica etc.
---
-NĂłs arranhamos apenas a superfĂcie, mas vocĂȘ jĂĄ tem idĂ©ia de como tudo funciona.
+NĂłs apenas arranhamos a superfĂcie, mas vocĂȘ jĂĄ tem idĂ©ia de como tudo funciona.
Experimente mudar a seguinte linha:

-Para um exemplo mais completo incluindo mais recursos, veja <a href="https://fastapi.tiangolo.com/tutorial/">Tutorial - Guia do UsuĂĄrio</a>.
+Para um exemplo mais completo incluindo mais recursos, veja <a href="https://fastapi.tiangolo.com/pt/tutorial/">Tutorial - Guia do UsuĂĄrio</a>.
**Alerta de Spoiler**: o tutorial - guia do usuĂĄrio inclui:
* Um poderoso e fĂĄcil de usar sistema de **<abbr title="tambĂ©m conhecido como componentes, recursos, fornecedores, serviços, injetĂĄveis">Injeção de DependĂȘncia</abbr>**.
* Segurança e autenticação, incluindo suporte para **OAuth2** com autenticação **JWT tokens** e **HTTP Basic**.
* Técnicas mais avançadas (mas igualmente fåceis) para declaração de **modelos JSON profundamente aninhados** (graças ao Pydantic).
+* IntegraçÔes **GraphQL** com o <a href="https://strawberry.rocks" class="external-link" target="_blank">Strawberry</a> e outras bibliotecas.
* Muitos recursos extras (graças ao Starlette) como:
* **WebSockets**
- * **GraphQL**
* testes extrememamente fĂĄceis baseados em HTTPX e `pytest`
* **CORS**
* **Cookie Sessions**
Testes de performance da _Independent TechEmpower_ mostram aplicaçÔes **FastAPI** rodando sob Uvicorn como <a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">um dos _frameworks_ Python mais rĂĄpidos disponĂveis</a>, somente atrĂĄs de Starlette e Uvicorn (utilizados internamente pelo FastAPI). (*)
-Para entender mais sobre performance, veja a seção <a href="https://fastapi.tiangolo.com/benchmarks/" class="internal-link" target="_blank">Benchmarks</a>.
+Para entender mais sobre performance, veja a seção <a href="https://fastapi.tiangolo.com/pt/benchmarks/" class="internal-link" target="_blank">ComparaçÔes</a>.
+
+## DependĂȘncias
+
+O FastAPI depende do Pydantic e do Starlette.
+
-## DependĂȘncias opcionais
+### DependĂȘncias `standard`
-Usados por Pydantic:
+Quando vocĂȘ instala o FastAPI com `pip install "fastapi[standard]"`, ele vĂȘm com o grupo `standard` (padrĂŁo) de dependĂȘncias opcionais:
+
+Utilizado pelo Pydantic:
* <a href="https://github.com/JoshData/python-email-validator" target="_blank"><code>email-validator</code></a> - para validação de email.
-Usados por Starlette:
+Utilizado pelo Starlette:
+
+* <a href="https://www.python-httpx.org" target="_blank"><code>httpx</code></a> - ObrigatĂłrio caso vocĂȘ queira utilizar o `TestClient`.
+* <a href="https://jinja.palletsprojects.com" target="_blank"><code>jinja2</code></a> - ObrigatĂłrio se vocĂȘ quer utilizar a configuração padrĂŁo de templates.
+* <a href="https://github.com/Kludex/python-multipart" target="_blank"><code>python-multipart</code></a> - ObrigatĂłrio se vocĂȘ deseja suporte a <abbr title="converting the string that comes from an HTTP request into Python data">"parsing"</abbr> de formulĂĄrio, com `request.form()`.
+
+Utilizado pelo FastAPI / Starlette:
+
+* <a href="https://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> - para o servidor que carrega e serve a sua aplicação. Isto inclui `uvicorn[standard]`, que inclui algumas dependĂȘncias (e.g. `uvloop`) necessĂĄrias para servir em alta performance.
+* `fastapi-cli` - que disponibiliza o comando `fastapi`.
+
+### Sem as dependĂȘncias `standard`
+
+Se vocĂȘ nĂŁo deseja incluir as dependĂȘncias opcionais `standard`, vocĂȘ pode instalar utilizando `pip install fastapi` ao invĂ©s de `pip install "fastapi[standard]"`.
+
+### DpendĂȘncias opcionais adicionais
+
+Existem algumas dependĂȘncias adicionais que vocĂȘ pode querer instalar.
-* <a href="https://www.python-httpx.org" target="_blank"><code>httpx</code></a> - NecessĂĄrio se vocĂȘ quiser utilizar o `TestClient`.
-* <a href="https://jinja.palletsprojects.com" target="_blank"><code>jinja2</code></a> - NecessĂĄrio se vocĂȘ quiser utilizar a configuração padrĂŁo de templates.
-* <a href="https://github.com/Kludex/python-multipart" target="_blank"><code>python-multipart</code></a> - NecessĂĄrio se vocĂȘ quiser suporte com <abbr title="converte uma string que chega de uma requisição HTTP para dados Python">"parsing"</abbr> de formulĂĄrio, com `request.form()`.
-* <a href="https://pythonhosted.org/itsdangerous/" target="_blank"><code>itsdangerous</code></a> - NecessĂĄrio para suporte a `SessionMiddleware`.
-* <a href="https://pyyaml.org/wiki/PyYAMLDocumentation" target="_blank"><code>pyyaml</code></a> - NecessĂĄrio para suporte a `SchemaGenerator` da Starlette (vocĂȘ provavelmente nĂŁo precisarĂĄ disso com o FastAPI).
-* <a href="https://graphene-python.org/" target="_blank"><code>graphene</code></a> - NecessĂĄrio para suporte a `GraphQLApp`.
+DependĂȘncias opcionais adicionais do Pydantic:
-Usados por FastAPI / Starlette:
+* <a href="https://docs.pydantic.dev/latest/usage/pydantic_settings/" target="_blank"><code>pydantic-settings</code></a> - para gerenciamento de configuraçÔes.
+* <a href="https://docs.pydantic.dev/latest/usage/types/extra_types/extra_types/" target="_blank"><code>pydantic-extra-types</code></a> - tipos extras para serem utilizados com o Pydantic.
-* <a href="https://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> - para o servidor que carrega e serve sua aplicação.
-* <a href="https://github.com/ijl/orjson" target="_blank"><code>orjson</code></a> - NecessĂĄrio se vocĂȘ quer utilizar `ORJSONResponse`.
-* <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a> - NecessĂĄrio se vocĂȘ quer utilizar `UJSONResponse`.
+DependĂȘncias opcionais adicionais do FastAPI:
-VocĂȘ pode instalar todas essas dependĂȘncias com `pip install fastapi[all]`.
+* <a href="https://github.com/ijl/orjson" target="_blank"><code>orjson</code></a> - ObrigatĂłrio se vocĂȘ deseja utilizar o `ORJSONResponse`.
+* <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a> - ObrigatĂłrio se vocĂȘ deseja utilizar o `UJSONResponse`.
## Licença