]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Update translations for pt (update-outdated) (#15753)
authorSebastián Ramírez <tiangolo@gmail.com>
Mon, 15 Jun 2026 19:50:40 +0000 (21:50 +0200)
committerGitHub <noreply@github.com>
Mon, 15 Jun 2026 19:50:40 +0000 (21:50 +0200)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
53 files changed:
docs/pt/docs/advanced/additional-responses.md
docs/pt/docs/advanced/advanced-dependencies.md
docs/pt/docs/advanced/custom-response.md
docs/pt/docs/advanced/dataclasses.md
docs/pt/docs/advanced/events.md
docs/pt/docs/advanced/generate-clients.md
docs/pt/docs/advanced/openapi-callbacks.md
docs/pt/docs/advanced/openapi-webhooks.md
docs/pt/docs/advanced/path-operation-advanced-configuration.md
docs/pt/docs/advanced/response-directly.md
docs/pt/docs/advanced/security/oauth2-scopes.md
docs/pt/docs/advanced/stream-data.md
docs/pt/docs/advanced/strict-content-type.md
docs/pt/docs/advanced/websockets.md
docs/pt/docs/advanced/wsgi.md
docs/pt/docs/deployment/docker.md
docs/pt/docs/deployment/fastapicloud.md
docs/pt/docs/deployment/manually.md
docs/pt/docs/deployment/server-workers.md
docs/pt/docs/how-to/extending-openapi.md
docs/pt/docs/how-to/separate-openapi-schemas.md
docs/pt/docs/index.md
docs/pt/docs/tutorial/bigger-applications.md
docs/pt/docs/tutorial/body-multiple-params.md
docs/pt/docs/tutorial/body-nested-models.md
docs/pt/docs/tutorial/body.md
docs/pt/docs/tutorial/cookie-param-models.md
docs/pt/docs/tutorial/cookie-params.md
docs/pt/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
docs/pt/docs/tutorial/dependencies/dependencies-with-yield.md
docs/pt/docs/tutorial/dependencies/index.md
docs/pt/docs/tutorial/dependencies/sub-dependencies.md
docs/pt/docs/tutorial/first-steps.md
docs/pt/docs/tutorial/metadata.md
docs/pt/docs/tutorial/path-operation-configuration.md
docs/pt/docs/tutorial/path-params-numeric-validations.md
docs/pt/docs/tutorial/path-params.md
docs/pt/docs/tutorial/query-params-str-validations.md
docs/pt/docs/tutorial/query-params.md
docs/pt/docs/tutorial/request-files.md
docs/pt/docs/tutorial/request-form-models.md
docs/pt/docs/tutorial/request-forms-and-files.md
docs/pt/docs/tutorial/request-forms.md
docs/pt/docs/tutorial/response-model.md
docs/pt/docs/tutorial/response-status-code.md
docs/pt/docs/tutorial/schema-extra-example.md
docs/pt/docs/tutorial/security/first-steps.md
docs/pt/docs/tutorial/security/get-current-user.md
docs/pt/docs/tutorial/security/oauth2-jwt.md
docs/pt/docs/tutorial/security/simple-oauth2.md
docs/pt/docs/tutorial/server-sent-events.md
docs/pt/docs/tutorial/stream-json-lines.md
docs/pt/docs/tutorial/testing.md

index 1df4b985197995dc25c7c03db22f4209d26af453..1e68134d3d7243fd7ea6f91cda3de2582e205e52 100644 (file)
@@ -34,7 +34,7 @@ Lembre-se que você deve retornar o `JSONResponse` diretamente.
 
 ///
 
-/// info | Informação
+/// note | Nota
 
 A chave `model` não é parte do OpenAPI.
 
@@ -183,7 +183,7 @@ Note que você deve retornar a imagem utilizando um `FileResponse` diretamente.
 
 ///
 
-/// info | Informação
+/// note | Nota
 
 A menos que você especifique um media type diferente explicitamente em seu parâmetro `responses`, o FastAPI assumirá que o retorno possui o mesmo media type contido na classe principal de retorno (padrão `application/json`).
 
index dbcf99390466afb6e906fb48d8f0437c7c96c611..15a78afec8380a663f22e1e374f01f8907e1616b 100644 (file)
@@ -98,7 +98,7 @@ Por exemplo, se você tivesse uma sessão de banco de dados em uma dependência
 
 Esse comportamento foi revertido na versão 0.118.0, para que o código de saída após o `yield` seja executado depois que a resposta for enviada.
 
-/// info | Informação
+/// note | Nota
 
 Como você verá abaixo, isso é muito semelhante ao comportamento antes da versão 0.106.0, mas com várias melhorias e correções de bugs para casos extremos.
 
@@ -108,7 +108,7 @@ Como você verá abaixo, isso é muito semelhante ao comportamento antes da vers
 
 Há alguns casos de uso, com condições específicas, que poderiam se beneficiar do comportamento antigo de executar o código de saída das dependências com `yield` antes de enviar a resposta.
 
-Por exemplo, imagine que você tem código que usa uma sessão de banco de dados em uma dependência com `yield` apenas para verificar um usuário, mas a sessão de banco de dados nunca é usada novamente na *função de operação de rota*, somente na dependência, e a resposta demora a ser enviada, como um `StreamingResponse` que envia dados lentamente, mas por algum motivo não usa o banco de dados.
+Por exemplo, imagine que você tem código que usa uma sessão de banco de dados em uma dependência com `yield` apenas para verificar um usuário, mas a sessão de banco de dados nunca é usada novamente na *função de operação de rota*, somente na dependência, e a response demora a ser enviada, como um `StreamingResponse` que envia dados lentamente, mas por algum motivo não usa o banco de dados.
 
 Nesse caso, a sessão de banco de dados seria mantida até que a resposta termine de ser enviada, mas se você não a usa, então não seria necessário mantê-la.
 
index a360bd3c9b8bb176ef47e0bd46158065e6e19f7f..3f8e8461c2cfa413ced8c4ce3f9c4e014bcd7dc1 100644 (file)
@@ -41,7 +41,7 @@ Para retornar uma resposta com HTML diretamente do **FastAPI**, utilize `HTMLRes
 
 {* ../../docs_src/custom_response/tutorial002_py310.py hl[2,7] *}
 
-/// info | Informação
+/// note | Nota
 
 O parâmetro `response_class` também será usado para definir o "media type" da resposta.
 
@@ -65,7 +65,7 @@ Uma `Response` retornada diretamente em sua *função de operação de rota* nã
 
 ///
 
-/// info | Informação
+/// note | Nota
 
 Obviamente, o cabeçalho `Content-Type`, o código de status, etc, virão do objeto `Response` que você retornou.
 
index 9a1f212d648735eff2e95f6b6e9b497f0d816eac..7956196c71ba0eff6935918bf7e5caa22e557369 100644 (file)
@@ -18,7 +18,7 @@ E claro, ele suporta o mesmo:
 
 Isso funciona da mesma forma que com os modelos Pydantic. E na verdade é alcançado da mesma maneira por baixo dos panos, usando Pydantic.
 
-/// info | Informação
+/// note | Nota
 
 Lembre-se de que dataclasses não podem fazer tudo o que os modelos Pydantic podem fazer.
 
index 7f15d833e6170fd444ab05fa9fdd49986562bca5..a6262d8dab578489c916608af2fe1eff9e1c36bd 100644 (file)
@@ -120,7 +120,7 @@ Para adicionar uma função que deve ser executada quando a aplicação estiver
 
 Aqui, a função de manipulador do evento `shutdown` escreverá uma linha de texto `"Application shutdown"` no arquivo `log.txt`.
 
-/// info | Informação
+/// note | Nota
 
 Na função `open()`, o `mode="a"` significa "acrescentar", então a linha será adicionada depois do que já estiver naquele arquivo, sem sobrescrever o conteúdo anterior.
 
@@ -152,7 +152,7 @@ Apenas um detalhe técnico para nerds curiosos. 🤓
 
 Por baixo, na especificação técnica do ASGI, isso é parte do [Protocolo Lifespan](https://asgi.readthedocs.io/en/latest/specs/lifespan.html), e define eventos chamados `startup` e `shutdown`.
 
-/// info | Informação
+/// note | Nota
 
 Você pode ler mais sobre os manipuladores de `lifespan` do Starlette na [Documentação do Lifespan do Starlette](https://www.starlette.dev/lifespan/).
 
index e6279a48b03c54414b126c423179204936d56697..89f2a89f4914b5386a5286706023b1121f530589 100644 (file)
@@ -31,7 +31,6 @@ O patrocínio também demonstra um forte compromisso com a **comunidade** FastAP
 Por exemplo, você pode querer experimentar:
 
 * [Stainless](https://www.stainless.com/?utm_source=fastapi&utm_medium=referral)
-* [liblab](https://developers.liblab.com/tutorials/sdk-for-fastapi?utm_source=fastapi)
 
 Algumas dessas soluções também podem ser open source ou oferecer planos gratuitos, para que você possa testá-las sem compromisso financeiro. Outros geradores comerciais de SDK estão disponíveis e podem ser encontrados online. 🤓
 
index df9e7e0bf6ab9128229c17569c07996f5bbd242c..1403425a9ca201e250a5478ab628e6b0217f350c 100644 (file)
@@ -167,13 +167,13 @@ Perceba como a URL de callback usada contém a URL recebida como um parâmetro d
 
 Nesse ponto você tem a(s) *operação(ões) de rota de callback* necessária(s) (a(s) que o *desenvolvedor externo* deveria implementar na *API externa*) no roteador de callback que você criou acima.
 
-Agora use o parâmetro `callbacks` no decorador da *operação de rota da sua API* para passar o atributo `.routes` (que é na verdade apenas uma `list` de rotas/*operações de path*) do roteador de callback:
+Agora use o parâmetro `callbacks` no decorador da *operação de rota da sua API* para passar o atributo `.routes` do roteador de callback:
 
 {* ../../docs_src/openapi_callbacks/tutorial001_py310.py hl[33] *}
 
 /// tip | Dica
 
-Perceba que você não está passando o roteador em si (`invoices_callback_router`) para `callback=`, mas o atributo `.routes`, como em `invoices_callback_router.routes`.
+Perceba que você não está passando o roteador em si (`invoices_callback_router`) para `callbacks=`, mas o atributo `.routes`, como em `invoices_callback_router.routes`. O FastAPI usará essas rotas para gerar a documentação OpenAPI do callback.
 
 ///
 
index 0c675089ca3f01ce698f0a39f0e1fa99b1d570a8..0e474c04246d128bced222ae0a5513b71597399f 100644 (file)
@@ -22,7 +22,7 @@ Com o **FastAPI**, utilizando o OpenAPI, você pode definir os nomes destes webh
 
 Isto pode facilitar bastante para os seus usuários **implementarem as APIs deles** para receber as requisições dos seus **webhooks**, eles podem inclusive ser capazes de gerar parte do código da API deles.
 
-/// info | Informação
+/// note | Nota
 
 Webhooks estão disponíveis a partir do OpenAPI 3.1.0, e possui suporte do FastAPI a partir da versão `0.99.0`.
 
@@ -36,7 +36,7 @@ Quando você cria uma aplicação com o **FastAPI**, existe um atributo chamado
 
 Os webhooks que você define aparecerão no esquema do **OpenAPI** e na **página de documentação** gerada automaticamente.
 
-/// info | Informação
+/// note | Nota
 
 O objeto `app.webhooks` é na verdade apenas um `APIRouter`, o mesmo tipo que você utilizaria ao estruturar a sua aplicação com diversos arquivos.
 
index b9862876cad1aee7521f88ba8b41eb7a5163ba9c..8aca43e088799845278fdbee59856a40c866b01d 100644 (file)
@@ -16,17 +16,11 @@ Você deveria ter certeza que ele é único para cada operação.
 
 ### Utilizando o nome da *função de operação de rota* como o operationId { #using-the-path-operation-function-name-as-the-operationid }
 
-Se você quiser utilizar o nome das funções da sua API como `operationId`s, você pode iterar sobre todos esses nomes e sobrescrever o `operation_id` em  cada *operação de rota* utilizando o `APIRoute.name` dela.
+Se você quiser utilizar os nomes das funções da sua API como `operationId`s, você pode passar uma `generate_unique_id_function` personalizada para o `FastAPI`.
 
-Você deveria fazer isso depois de adicionar todas as suas *operações de rota*.
+A função recebe cada `APIRoute` e retorna o `operationId` a ser usado para aquela operação de rota.
 
-{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2, 12:21, 24] *}
-
-/// tip | Dica
-
-Se você chamar `app.openapi()` manualmente, você deveria atualizar os `operationId`s antes dessa chamada.
-
-///
+{* ../../docs_src/path_operation_advanced_configuration/tutorial002_py310.py hl[2,5:6,9] *}
 
 /// warning | Atenção
 
index 9024897c1ad424f466bc54309b61dc88e23e230c..cc1a630c34cb1ab884511452db4d7d9235bf4087 100644 (file)
@@ -18,7 +18,7 @@ Normalmente você terá um desempenho muito melhor usando um [Modelo de resposta
 
 Você pode retornar uma `Response` ou qualquer subclasse dela.
 
-/// info | Informação
+/// note | Nota
 
 A própria `JSONResponse` é uma subclasse de `Response`.
 
index 7ea61ad60e3c478bab67a5065a4e0b0078e7ea27..9dfa6aaf681367c91681ba593cdf1989a098ed0b 100644 (file)
@@ -46,7 +46,7 @@ Eles são normalmente utilizados para declarar permissões de segurança especí
 * `instagram_basic` é utilizado pelo Facebook / Instagram.
 * `https://www.googleapis.com/auth/drive` é utilizado pelo Google.
 
-/// info | Informação
+/// note | Nota
 
 No OAuth2, um "escopo" é apenas uma string que declara uma permissão específica necessária.
 
index 8e0bf08b6802d9bce90d8f702ecbc90fcad72c5d..c71d2ca422d2885afc3996d584f7d1950dbda706 100644 (file)
@@ -4,7 +4,7 @@ Se você quer transmitir dados que podem ser estruturados como JSON, você dever
 
 Mas se você quer transmitir dados binários puros ou strings, veja como fazer.
 
-/// info | Informação
+/// note | Nota
 
 Adicionado no FastAPI 0.134.0.
 
@@ -90,7 +90,7 @@ Por exemplo, eles não têm `await file.read()`, nem `async for chunk in file`.
 
 E, em muitos casos, lê-los seria uma operação bloqueante (que poderia bloquear o loop de eventos), pois são lidos do disco ou da rede.
 
-/// info | Informação
+/// note | Nota
 
 O exemplo acima é, na verdade, uma exceção, porque o objeto `io.BytesIO` já está em memória, então lê-lo não bloqueará nada.
 
index 9530501d4e568f4d899ac5604ab6ba6da496b778..843caa848af4a13c8d17e551b3901b3a5e718ac6 100644 (file)
@@ -1,6 +1,6 @@
 # Verificação Estrita de Content-Type { #strict-content-type-checking }
 
-Por padrão, o **FastAPI** usa verificação estrita do cabeçalho `Content-Type` para corpos de requisição JSON; isso significa que requisições JSON devem incluir um `Content-Type` válido (por exemplo, `application/json`) para que o corpo seja interpretado como JSON.
+Por padrão, o **FastAPI** usa verificação estrita do cabeçalho `Content-Type` para corpos de requisição JSON; isso significa que requisições JSON **devem** incluir um `Content-Type` válido (por exemplo, `application/json`) para que o corpo seja interpretado como JSON.
 
 ## Risco de CSRF { #csrf-risk }
 
@@ -40,7 +40,7 @@ Observe que ambos têm o mesmo host.
 
 Usando o frontend, você pode fazer o agente de IA executar ações em seu nome.
 
-Como está em execução localmente e não na Internet aberta, você decide não configurar autenticação, confiando apenas no acesso à rede local.
+Como está em execução **localmente** e não na Internet aberta, você decide **não configurar autenticação**, confiando apenas no acesso à rede local.
 
 Então um de seus usuários poderia instalá-lo e executá-lo localmente.
 
@@ -69,9 +69,9 @@ Se sua aplicação está na Internet aberta, você não “confiaria na rede”
 
 Atacantes poderiam simplesmente executar um script para enviar requisições à sua API, sem necessidade de interação do navegador, então você provavelmente já está protegendo quaisquer endpoints privilegiados.
 
-Nesse caso, esse ataque/risco não se aplica a você.
+Nesse caso, **esse ataque/risco não se aplica a você**.
 
-Esse risco e ataque é relevante principalmente quando a aplicação roda na rede local e essa é a única proteção presumida.
+Esse risco e ataque é relevante principalmente quando a aplicação roda na **rede local** e essa é a **única proteção presumida**.
 
 ## Permitindo Requisições sem Content-Type { #allowing-requests-without-content-type }
 
@@ -81,7 +81,7 @@ Se você precisa dar suporte a clientes que não enviam um cabeçalho `Content-T
 
 Com essa configuração, requisições sem um cabeçalho `Content-Type` terão o corpo interpretado como JSON, o mesmo comportamento das versões mais antigas do FastAPI.
 
-/// info | Informação
+/// note | Nota
 
 Esse comportamento e configuração foram adicionados no FastAPI 0.132.0.
 
index 70b2ee853d9bd1b954f92496908b520f97e0e0b9..5367a91bee6812bb3131024183c74bd69a0fe485 100644 (file)
@@ -111,7 +111,7 @@ Eles funcionam da mesma forma que para outros endpoints FastAPI/*operações de
 
 {* ../../docs_src/websockets_/tutorial002_an_py310.py hl[68:69,82] *}
 
-/// info | Informação
+/// note | Nota
 
 Como isso é um WebSocket, não faz muito sentido levantar uma `HTTPException`, em vez disso levantamos uma `WebSocketException`.
 
index 110bba05380ae36c4c67b8f727f894fdcd140282..30e8a3b2c7ac615fe7d674428039c27f53517640 100644 (file)
@@ -6,7 +6,7 @@ Para isso, você pode utilizar o `WSGIMiddleware` para encapsular a sua aplicaç
 
 ## Usando `WSGIMiddleware` { #using-wsgimiddleware }
 
-/// info | Informação
+/// note | Nota
 
 Isso requer instalar `a2wsgi`, por exemplo com `pip install a2wsgi`.
 
index 33e23351f3c92b16428a2b2fa9d6208f42236300..e14870d7cfd0e55a67c7b966ff54500d275885f2 100644 (file)
@@ -132,7 +132,7 @@ Successfully installed fastapi pydantic
 
 </div>
 
-/// info | Informação
+/// note | Nota
 
 Há outros formatos e ferramentas para definir e instalar dependências de pacotes.
 
@@ -556,7 +556,7 @@ Se você estiver usando contêineres (por exemplo, Docker, Kubernetes), existem
 
 Se você tiver **múltiplos contêineres**, provavelmente cada um executando um **único processo** (por exemplo, em um cluster do **Kubernetes**), então provavelmente você gostaria de ter um **contêiner separado** fazendo o trabalho dos **passos anteriores** em um único contêiner, executando um único processo, **antes** de executar os contêineres workers replicados.
 
-/// info | Informação
+/// note | Nota
 
 Se você estiver usando o Kubernetes, provavelmente será um [Init Container](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/).
 
index 26ec85ac07561ac004400806af05e43fd74f988f..0504a444c2c293b8bcc1c9036c2d021b5429ca8c 100644 (file)
@@ -1,26 +1,6 @@
 # FastAPI Cloud { #fastapi-cloud }
 
-Você pode implantar sua aplicação FastAPI no [FastAPI Cloud](https://fastapicloud.com) com um **único comando**; entre na lista de espera, caso ainda não tenha feito isso. 🚀
-
-## Login { #login }
-
-Certifique-se de que você já tem uma conta no **FastAPI Cloud** (nós convidamos você a partir da lista de espera 😉).
-
-Depois, faça login:
-
-<div class="termy">
-
-```console
-$ fastapi login
-
-You are logged in to FastAPI Cloud 🚀
-```
-
-</div>
-
-## Implantar { #deploy }
-
-Agora, implante sua aplicação, com **um único comando**:
+Você pode implantar sua aplicação FastAPI no [FastAPI Cloud](https://fastapicloud.com) com apenas **um comando**. 🚀
 
 <div class="termy">
 
@@ -36,6 +16,8 @@ Deploying to FastAPI Cloud...
 
 </div>
 
+A CLI detectará automaticamente sua aplicação FastAPI e a implantará na nuvem. Se você não estiver autenticado, seu navegador será aberto para concluir o processo de autenticação.
+
 É isso! Agora você pode acessar sua aplicação nesse URL. ✨
 
 ## Sobre o FastAPI Cloud { #about-fastapi-cloud }
index 19ed1a4abbcc321e82ff62d954ddf488e576c2ad..8f34e37d05f00caede4cbd14c3f0239e1bfaeff5 100644 (file)
@@ -56,7 +56,6 @@ Existem diversas alternativas, incluindo:
 * [Hypercorn](https://hypercorn.readthedocs.io/): um servidor ASGI compatível com HTTP/2, Trio e outros recursos.
 * [Daphne](https://github.com/django/daphne): servidor ASGI construído para Django Channels.
 * [Granian](https://github.com/emmett-framework/granian): um servidor HTTP Rust para aplicações Python.
-* [NGINX Unit](https://unit.nginx.org/howto/fastapi/): NGINX Unit é um runtime de aplicação web leve e versátil.
 
 ## Máquina Servidora e Programa Servidor { #server-machine-and-server-program }
 
index 98c1877c2258e640e3f9ebb813144f03f8c8049b..4d70de966425840510cb7bb44fa237b81d12f18d 100644 (file)
@@ -17,7 +17,7 @@ Como você viu no capítulo anterior sobre [Conceitos de implantação](concepts
 
 Aqui mostrarei como usar o **Uvicorn** com **processos de trabalho** usando o comando `fastapi` ou o comando `uvicorn` diretamente.
 
-/// info | Informação
+/// note | Nota
 
 Se você estiver usando contêineres, por exemplo com Docker ou Kubernetes, falarei mais sobre isso no próximo capítulo: [FastAPI em contêineres - Docker](docker.md).
 
index 23737e5fa125c8843b3b80bcdc535a0fc7e3df71..86b53acee33874ff4a80aa5028ad145139b6f95f 100644 (file)
@@ -25,9 +25,17 @@ E essa função `get_openapi()` recebe como parâmetros:
 * `openapi_version`: A versão da especificação OpenAPI utilizada. Por padrão, a mais recente: `3.1.0`.
 * `summary`: Um resumo curto da API.
 * `description`: A descrição da sua API, que pode incluir markdown e será exibida na documentação.
-* `routes`: Uma lista de rotas, que são cada uma das *operações de rota* registradas. Elas são obtidas de `app.routes`.
+* `routes`: As rotas da aplicação, obtidas de `app.routes`. O FastAPI as usa para coletar as *operações de rota* registradas, incluindo as dos routers incluídos.
 
-/// info | Informação
+/// tip | Detalhes Técnicos
+
+`app.routes` é uma árvore de rotas de baixo nível. Ela pode incluir rotas candidatas que o FastAPI usa internamente para routers incluídos, não apenas objetos finais `APIRoute`.
+
+Você ainda pode passar `app.routes` para `get_openapi()`. O FastAPI vai percorrer essa árvore de rotas para coletar as operações de rota efetivas.
+
+///
+
+/// note | Nota
 
 O parâmetro `summary` está disponível no OpenAPI 3.1.0 e superior, suportado pelo FastAPI 0.99.0 e superior.
 
index f757025a097d0530231cae941c5f26b04527436d..3fe9ea7193e16405c131d50047b7d0e7d3cf0d56 100644 (file)
@@ -38,7 +38,7 @@ Mas se você usar o mesmo modelo como saída, como aqui:
 
 ### Modelo para Dados de Resposta de Saída { #model-for-output-response-data }
 
-Se você interagir com a documentação e verificar a resposta, mesmo que o código não tenha adicionado nada em um dos campos `description`, a resposta JSON contém o valor padrão (`null`):
+Se você interagir com a documentação e verificar a resposta, mesmo que o código não tenha adicionado nada em um dos campos `description`, a response JSON contém o valor padrão (`null`):
 
 <div class="screenshot">
 <img src="/img/tutorial/separate-openapi-schemas/image02.png">
@@ -81,11 +81,11 @@ Com esse recurso do **Pydantic v2**, sua documentação da API fica mais **preci
 
 Agora, há alguns casos em que você pode querer ter o **mesmo esquema para entrada e saída**.
 
-Provavelmente, o principal caso de uso para isso é se você já tem algum código de cliente/SDK gerado automaticamente e não quer atualizar todo o código de cliente/SDK gerado ainda, você provavelmente vai querer fazer isso em algum momento, mas talvez não agora.
+Provavelmente, o principal caso de uso para isso é se você já tem algum código de cliente/SDKs gerado automaticamente e não quer atualizar todo o código de cliente/SDKs gerado ainda, você provavelmente vai querer fazer isso em algum momento, mas talvez não agora.
 
 Nesse caso, você pode desativar esse recurso no **FastAPI**, com o parâmetro `separate_input_output_schemas=False`.
 
-/// info | Informação
+/// note | Nota
 
 O suporte para `separate_input_output_schemas` foi adicionado no FastAPI `0.102.0`. 🤓
 
index 6f54cd6dc3954545e1c96b4dcb44318c4a44ff3c..2f12317c3315186ca8e24b2b2eba50a593bc8fd3 100644 (file)
@@ -469,7 +469,7 @@ Experimente mudar a seguinte linha:
         ... "item_price": item.price ...
 ```
 
-...e veja como seu editor irá auto-completar os atributos e saberá os tipos:
+...e veja como seu editor irá autocompletar os atributos e saberá os tipos:
 
 ![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png)
 
@@ -492,9 +492,7 @@ Para um exemplo mais completo incluindo mais recursos, veja o <a href="https://f
 
 ### Implemente sua aplicação (opcional) { #deploy-your-app-optional }
 
-Você pode opcionalmente implantar sua aplicação FastAPI na [FastAPI Cloud](https://fastapicloud.com), vá e entre na lista de espera se ainda não o fez. 🚀
-
-Se você já tem uma conta na **FastAPI Cloud** (nós convidamos você da lista de espera 😉), pode implantar sua aplicação com um único comando.
+Você pode opcionalmente implantar sua aplicação FastAPI na [FastAPI Cloud](https://fastapicloud.com) com um único comando. 🚀
 
 <div class="termy">
 
@@ -510,6 +508,8 @@ Deploying to FastAPI Cloud...
 
 </div>
 
+A CLI detectará automaticamente sua aplicação FastAPI e a implantará na nuvem. Se você não estiver autenticado, o navegador será aberto para concluir o processo de autenticação.
+
 É isso! Agora você pode acessar sua aplicação nesse URL. ✨
 
 #### Sobre a FastAPI Cloud { #about-fastapi-cloud }
index 3832f94ffc26089120eee7a7caaf449031062d28..263145c49a35ed0b39655259f6d39df8a10030aa 100644 (file)
@@ -382,11 +382,11 @@ Agora, vamos incluir os `router`s dos submódulos `users` e `items`:
 
 {* ../../docs_src/bigger_applications/app_an_py310/main.py hl[10:11] title["app/main.py"] *}
 
-/// note | Nota
+/// note | Detalhes Técnicos
 
-`users.router` contém o `APIRouter` dentro do arquivo `app/routers/users.py`.
+O FastAPI mantém o `APIRouter` original e seus `APIRoute`s ativos quando o router é incluído na aplicação principal.
 
-E `items.router` contém o `APIRouter` dentro do arquivo `app/routers/items.py`.
+Isso significa que subclasses personalizadas de `APIRouter` e `APIRoute` ainda podem participar depois que o router é incluído.
 
 ///
 
@@ -394,19 +394,11 @@ Com `app.include_router()` podemos adicionar cada `APIRouter` ao aplicativo prin
 
 Ele incluirá todas as rotas daquele router como parte dele.
 
-/// note | Detalhes Técnicos
-
-Na verdade, ele criará internamente uma *operação de rota* para cada *operação de rota* que foi declarada no `APIRouter`.
-
-Então, nos bastidores, ele realmente funcionará como se tudo fosse o mesmo aplicativo único.
-
-///
-
 /// tip | Dica
 
 Você não precisa se preocupar com desempenho ao incluir routers.
 
-Isso levará microssegundos e só acontecerá na inicialização.
+Isso foi projetado para ser leve e evitar adicionar overhead a cada request.
 
 Então não afetará o desempenho. ⚡
 
@@ -461,7 +453,7 @@ Os `APIRouter`s não são "montados", eles não são isolados do resto do aplica
 
 Isso ocorre porque queremos incluir suas *operações de rota* no esquema OpenAPI e nas interfaces de usuário.
 
-Como não podemos simplesmente isolá-los e "montá-los" independentemente do resto, as *operações de rota* são "clonadas" (recriadas), não incluídas diretamente.
+O FastAPI mantém os routers e as operações de rota originais ativos e combina os prefixos, dependências, tags, responses e outros metadados do router ao tratar as requisições e gerar o OpenAPI.
 
 ///
 
@@ -532,4 +524,16 @@ Da mesma forma que você pode incluir um `APIRouter` em uma aplicação `FastAPI
 router.include_router(other_router)
 ```
 
-Certifique-se de fazer isso antes de incluir `router` na aplicação `FastAPI`, para que as *operações de rota* de `other_router` também sejam incluídas.
+Você pode fazer isso antes ou depois de incluir o `router` na aplicação `FastAPI`. O FastAPI ainda incluirá as *operações de rota* de `other_router` no roteamento e no OpenAPI.
+
+O mesmo vale para *operações de rota* adicionadas depois aos routers. Elas também ficarão visíveis por meio da inclusão anterior.
+
+/// warning | Detalhes Técnicos
+
+Evite mutar diretamente `router.routes` após incluir um router. O FastAPI trata a inclusão de routers como algo ativo, então o router original e suas rotas permanecem parte do roteamento e da geração do OpenAPI.
+
+Use APIs documentadas como os decoradores de operações de rota e `.include_router()` para adicionar rotas e routers.
+
+Trate `router.routes` como uma árvore de rotas de nível mais baixo que pode conter definições de rotas e routers incluídos, e evite depender dela como uma lista plana de operações de rota finais.
+
+///
index 828cde633a2e2daeb37c2aeb865fae757def20f4..8620c9e20549f4132d986846b1fa484d815cab67 100644 (file)
@@ -108,7 +108,7 @@ Por exemplo:
 
 {* ../../docs_src/body_multiple_params/tutorial004_an_py310.py hl[28] *}
 
-/// info | Informação
+/// note | Nota
 
 `Body` também possui todas as validações adicionais e metadados de parâmetros como em `Query`,`Path` e outras que você verá depois.
 
@@ -123,7 +123,7 @@ Por padrão, o **FastAPI** esperará que seu conteúdo venha no corpo diretament
 Mas se você quiser que ele espere por um JSON com uma chave `item` e dentro dele os conteúdos do modelo, como ocorre ao declarar vários parâmetros de corpo, você pode usar o parâmetro especial de `Body` chamado `embed`:
 
 ```Python
-item: Item = Body(embed=True)
+item: Annotated[Item, Body(embed=True)]
 ```
 
 como em:
index 343f94997a6354ac652d65afc4b0ba6a3a4d099a..310caf972d17bd43dbd9a7d5163883557fb9c94b 100644 (file)
@@ -136,7 +136,7 @@ Isso vai esperar (converter, validar, documentar, etc) um corpo JSON tal qual:
 }
 ```
 
-/// info | Informação
+/// note | Nota
 
 Observe como a chave `images` agora tem uma lista de objetos de imagem.
 
@@ -148,7 +148,7 @@ Você pode definir modelos profundamente aninhados de forma arbitrária:
 
 {* ../../docs_src/body_nested_models/tutorial007_py310.py hl[7,12,18,21,25] *}
 
-/// info | Informação
+/// note | Nota
 
 Observe como `Offer` tem uma lista de `Item`s, que por sua vez têm uma lista opcional de `Image`s
 
index 926de84facc73f073f8e36c6a2575550df6b61ac..afd652efcc18c319beb7f9215a114845f62ee42a 100644 (file)
@@ -8,7 +8,7 @@ Sua API quase sempre precisa enviar um corpo na **resposta**. Mas os clientes n
 
 Para declarar um corpo da **requisição**, você utiliza os modelos do [Pydantic](https://docs.pydantic.dev/) com todos os seus poderes e benefícios.
 
-/// info | Informação
+/// note | Nota
 
 Para enviar dados, você deveria usar um dos: `POST` (o mais comum), `PUT`, `DELETE` ou `PATCH`.
 
index f125314c8b4c30642190f17ec9d333bdd55fb6cc..b5991597979f9269169d0a74883eceb2ae815671 100644 (file)
@@ -32,7 +32,7 @@ Você pode ver os cookies definidos na IU da documentação em `/docs`:
 <img src="/img/tutorial/cookie-param-models/image01.png">
 </div>
 
-/// info | Informação
+/// note | Nota
 
 Tenha em mente que, como os **navegadores lidam com cookies** de maneira especial e por baixo dos panos, eles **não** permitem facilmente que o **JavaScript** lidem com eles.
 
index 5540a67d207d41fbc20c0a25bc17bd4ed49ffbeb..0bf011f801e847f273f31993119a343873cac993 100644 (file)
@@ -24,13 +24,13 @@ Mas lembre-se que quando você importa `Query`, `Path`, `Cookie` e outras de `fa
 
 ///
 
-/// info | Informação
+/// note | Nota
 
 Para declarar cookies, você precisa usar `Cookie`, pois caso contrário, os parâmetros seriam interpretados como parâmetros de consulta.
 
 ///
 
-/// info | Informação
+/// note | Nota
 
 Tenha em mente que, como os **navegadores lidam com cookies** de maneiras especiais e nos bastidores, eles **não** permitem facilmente que o **JavaScript** os acesse.
 
index 05742c8e0c61168e30736f2cd0c708c14c8cd0d5..14c1f5cd3fcf33d89ee8184d325b3530635766b5 100644 (file)
@@ -28,7 +28,7 @@ Isso também pode ser útil para evitar confundir novos desenvolvedores que ao v
 
 ///
 
-/// info | Informação
+/// note | Nota
 
 Neste exemplo utilizamos cabeçalhos personalizados inventados `X-Key` e `X-Token`.
 
index 3e4a31d6ff88360ce14388b7cd7f46a5cb9e77f9..d2eaaed5722b9338352ec73d44f6824d39c0f53b 100644 (file)
@@ -121,7 +121,7 @@ Se você capturar uma exceção com `except` em uma dependência que utilize `yi
 
 Neste caso, o cliente irá ver uma resposta *HTTP 500 Internal Server Error* como deveria acontecer, já que não estamos levantando nenhuma `HTTPException` ou coisa parecida, mas o servidor **não terá nenhum log** ou qualquer outra indicação de qual foi o erro. 😱
 
-### Sempre levante (`raise`) em Dependências com `yield` e `except` { #always-raise-in-dependencies-with-yield-and-except }
+### Sempre `raise` em Dependências com `yield` e `except` { #always-raise-in-dependencies-with-yield-and-except }
 
 Se você capturar uma exceção em uma dependência com `yield`, a menos que você esteja levantando outra `HTTPException` ou coisa parecida, **você deve relançar a exceção original**.
 
@@ -170,7 +170,7 @@ participant tasks as Tarefas de Background
     end
 ```
 
-/// info | Informação
+/// note | Nota
 
 Apenas **uma resposta** será enviada para o cliente. Ela pode ser uma das respostas de erro, ou então a resposta da *operação de rota*.
 
index baea97f7ffec58b5299be4c8c6967ab8d390e407..47ec09e1f6faeb6a72c56595aba561685364a8c0 100644 (file)
@@ -51,7 +51,7 @@ Neste caso, a dependência espera por:
 
 E então retorna um `dict` contendo esses valores.
 
-/// info | Informação
+/// note | Nota
 
 FastAPI passou a suportar a notação `Annotated` (e começou a recomendá-la) na versão 0.95.0.
 
@@ -106,7 +106,7 @@ common_parameters --> read_users
 
 Assim, você escreve um código compartilhado apenas uma vez e o **FastAPI** se encarrega de chamá-lo em suas *operações de rota*.
 
-/// check | Verifique
+/// tip | Dica
 
 Perceba que você não precisa criar uma classe especial e enviar a dependência para algum outro lugar em que o **FastAPI** a "registre" ou realize qualquer operação similar.
 
@@ -136,7 +136,7 @@ Mas como o **FastAPI** se baseia em convenções do Python, incluindo `Annotated
 
 ///
 
-As dependências continuarão funcionando como esperado, e a **melhor parte** é que a **informação sobre o tipo é preservada**, o que signfica que seu editor de texto ainda irá incluir **preenchimento automático**, **visualização de erros**, etc. O mesmo vale para ferramentas como `mypy`.
+As dependências continuarão funcionando como esperado, e a **melhor parte** é que a **informação sobre o tipo é preservada**, o que significa que seu editor de texto ainda irá incluir **preenchimento automático**, **erros em linha**, etc. O mesmo vale para ferramentas como `mypy`.
 
 Isso é especialmente útil para uma **base de código grande** onde **as mesmas dependências** são utilizadas repetidamente em **muitas *operações de rota***.
 
@@ -152,7 +152,7 @@ Não faz diferença. O **FastAPI** sabe o que fazer.
 
 /// note | Nota
 
-Caso você não conheça, veja em [Async: *"Com Pressa?"*](../../async.md#in-a-hurry) a sessão acerca de `async` e `await` na documentação.
+Caso você não conheça, veja em [Async: *"Com Pressa?"*](../../async.md#in-a-hurry) a seção acerca de `async` e `await` na documentação.
 
 ///
 
index 63ed0e48ad78c89f38eb5ce8324a23eecc659d3f..da49f3b5bd7db74d5d430d48b427ced4e1cbd0be 100644 (file)
@@ -35,7 +35,7 @@ Então podemos utilizar a dependência com:
 
 {* ../../docs_src/dependencies/tutorial005_an_py310.py hl[23] *}
 
-/// info | Informação
+/// note | Nota
 
 Perceba que nós estamos declarando apenas uma dependência na *função de operação de rota*, em `query_or_cookie_extractor`.
 
index 719a38c2098a5a85094201659f20be5c7a6f31e9..1a829a08c524c553cc3bdc8d52f3728ea0b4c2c4 100644 (file)
@@ -180,7 +180,7 @@ o que seria equivalente a:
 from backend.main import app
 ```
 
-### `fastapi dev` com path { #fastapi-dev-with-path }
+### `fastapi dev` com path ou com a opção de CLI `--entrypoint` { #fastapi-dev-with-path-or-with-entrypoint-cli-option }
 
 Você também pode passar o path do arquivo para o comando `fastapi dev`, e ele vai deduzir o objeto de aplicação FastAPI a ser usado:
 
@@ -188,29 +188,19 @@ Você também pode passar o path do arquivo para o comando `fastapi dev`, e ele
 $ fastapi dev main.py
 ```
 
-Mas você teria que lembrar de passar o path correto toda vez que chamar o comando `fastapi`.
-
-Além disso, outras ferramentas podem não conseguir encontrá-la, por exemplo, a [Extensão do VS Code](../editor-support.md) ou a [FastAPI Cloud](https://fastapicloud.com), então é recomendado usar o `entrypoint` no `pyproject.toml`.
-
-### Faça o deploy da sua aplicação (opcional) { #deploy-your-app-optional }
-
-Você pode, opcionalmente, fazer o deploy da sua aplicação FastAPI na [FastAPI Cloud](https://fastapicloud.com); acesse e entre na lista de espera, se ainda não entrou. 🚀
-
-Se você já tem uma conta na **FastAPI Cloud** (nós convidamos você da lista de espera 😉), pode fazer o deploy da sua aplicação com um único comando.
-
-Antes do deploy, certifique-se de que está autenticado:
-
-<div class="termy">
+Ou você também pode passar a opção `--entrypoint` para o comando `fastapi dev`:
 
 ```console
-$ fastapi login
-
-You are logged in to FastAPI Cloud 🚀
+$ fastapi dev --entrypoint main:app
 ```
 
-</div>
+Mas você teria que lembrar de passar o path\entrypoint correto toda vez que chamar o comando `fastapi`.
+
+Além disso, outras ferramentas podem não conseguir encontrá-la, por exemplo, a [Extensão do VS Code](../editor-support.md) ou a [FastAPI Cloud](https://fastapicloud.com), então é recomendado usar o `entrypoint` no `pyproject.toml`.
 
-Em seguida, faça o deploy da sua aplicação:
+### Faça o deploy da sua aplicação (opcional) { #deploy-your-app-optional }
+
+Você pode, opcionalmente, fazer o deploy da sua aplicação FastAPI na [FastAPI Cloud](https://fastapicloud.com) com um único comando. 🚀
 
 <div class="termy">
 
@@ -226,6 +216,8 @@ Deploying to FastAPI Cloud...
 
 </div>
 
+A CLI detectará automaticamente sua aplicação FastAPI e a fará o deploy na nuvem. Se você não estiver autenticado, o seu navegador será aberto para concluir o processo de autenticação.
+
 É isso! Agora você pode acessar sua aplicação nessa URL. ✨
 
 ## Recapitulando, passo a passo { #recap-step-by-step }
@@ -270,7 +262,7 @@ https://example.com/items/foo
 /items/foo
 ```
 
-/// info | Informação
+/// note | Nota
 
 Um "path" também é comumente chamado de "endpoint" ou de "rota".
 
@@ -322,7 +314,7 @@ O `@app.get("/")` diz ao **FastAPI** que a função logo abaixo é responsável
 * o path `/`
 * usando uma <dfn title="um método HTTP GET"><code>get</code> operação</dfn>
 
-/// info | Informações sobre `@decorator`
+/// note | Informações sobre `@decorator`
 
 Essa sintaxe `@alguma_coisa` em Python é chamada de "decorador".
 
index 3d96109789375f82a015f9c01a51b2f5d0f24921..022e622cafdacd16cae1e7a5f86f77fd9369a868 100644 (file)
@@ -74,7 +74,7 @@ Use o parâmetro `tags` com suas *operações de rota* (e `APIRouter`s) para atr
 
 {* ../../docs_src/metadata/tutorial004_py310.py hl[21,26] *}
 
-/// info | Informação
+/// note | Nota
 
 Leia mais sobre tags em [Configuração de operação de rota](path-operation-configuration.md#tags).
 
index 745b9b6980730ac96bc14a5f8b169fd3975d8c83..3559667bd8c89b659f204e0c3c0f086dc3a5baa8 100644 (file)
@@ -72,13 +72,13 @@ Você pode especificar a descrição da resposta com o parâmetro `response_desc
 
 {* ../../docs_src/path_operation_configuration/tutorial005_py310.py hl[18] *}
 
-/// info | Informação
+/// note | Nota
 
-Note que `response_description` se refere especificamente à resposta, a `description` se refere à *operação de rota* em geral.
+Observe que `response_description` se refere especificamente à resposta, a `description` se refere à *operação de rota* em geral.
 
 ///
 
-/// check | Verifique
+/// tip | Dica
 
 OpenAPI especifica que cada *operação de rota* requer uma descrição de resposta.
 
index 9bbe14c759ac6710b669f1d401bfaf31adb750ee..0a48c09e4ddd5ea89c54c9f5d53e3994f2b1e50f 100644 (file)
@@ -8,7 +8,7 @@ Primeiro, importe `Path` de `fastapi`, e importe `Annotated`:
 
 {* ../../docs_src/path_params_numeric_validations/tutorial001_an_py310.py hl[1,3] *}
 
-/// info | Informação
+/// note | Nota
 
 O FastAPI adicionou suporte a `Annotated` (e passou a recomendá-lo) na versão 0.95.0.
 
@@ -131,7 +131,7 @@ E você também pode declarar validações numéricas:
 * `lt`: menor que (`l`ess `t`han)
 * `le`: menor que ou igual (`l`ess than or `e`qual)
 
-/// info | Informação
+/// note | Nota
 
 `Query`, `Path` e outras classes que você verá depois são subclasses de uma classe comum `Param`.
 
index ea9af63f36f68a6860938ae31c196fdefaee5f6c..30251970dbffbe2a99f8ebee536e34b2199ce974 100644 (file)
@@ -20,7 +20,7 @@ Você pode declarar o tipo de um parâmetro de path na função, usando as anota
 
 Neste caso, `item_id` é declarado como um `int`.
 
-/// check | Verifique
+/// tip | Dica
 Isso fornecerá suporte do editor dentro da sua função, com verificações de erros, preenchimento automático, etc.
 ///
 
@@ -32,7 +32,7 @@ Se você executar este exemplo e abrir seu navegador em [http://127.0.0.1:8000/i
 {"item_id":3}
 ```
 
-/// check | Verifique
+/// tip | Dica
 Perceba que o valor que sua função recebeu (e retornou) é `3`, como um `int` do Python, não uma string `"3"`.
 
 Então, com essa declaração de tipo, o **FastAPI** fornece <dfn title="convertendo a string que vem de um request HTTP em dados Python">"parsing"</dfn> automático do request.
@@ -62,7 +62,7 @@ porque o parâmetro de path `item_id` tinha o valor `"foo"`, que não é um `int
 
 O mesmo erro apareceria se você fornecesse um `float` em vez de um `int`, como em: [http://127.0.0.1:8000/items/4.2](http://127.0.0.1:8000/items/4.2)
 
-/// check | Verifique
+/// tip | Dica
 Então, com a mesma declaração de tipo do Python, o **FastAPI** fornece validação de dados.
 
 Observe que o erro também declara claramente exatamente o ponto onde a validação não passou.
@@ -76,7 +76,7 @@ E quando você abrir seu navegador em [http://127.0.0.1:8000/docs](http://127.0.
 
 <img src="/img/tutorial/path-params/image01.png">
 
-/// check | Verifique
+/// tip | Dica
 Novamente, apenas com a mesma declaração de tipo do Python, o **FastAPI** fornece documentação automática e interativa (integrando o Swagger UI).
 
 Observe que o parâmetro de path está declarado como um inteiro.
index 5ee41684a243bdc824064137d63d56f7424ed587..fe703c624832f64c61a2a7637af99e5ecc79486d 100644 (file)
@@ -29,7 +29,7 @@ Para isso, primeiro importe:
 
 {* ../../docs_src/query_params_str_validations/tutorial002_an_py310.py hl[1,3] *}
 
-/// info | Informação
+/// note | Nota
 
 O FastAPI adicionou suporte a `Annotated` (e passou a recomendá-lo) na versão 0.95.0.
 
@@ -298,7 +298,7 @@ Você também pode usar `list` diretamente em vez de `list[str]`:
 
 Tenha em mente que, neste caso, o FastAPI não verificará o conteúdo da lista.
 
-Por exemplo, `list[int]` verificaria (and documentaria) que os conteúdos da lista são inteiros. Mas `list` sozinho não.
+Por exemplo, `list[int]` verificaria (e documentaria) que os conteúdos da lista são inteiros. Mas `list` sozinho não.
 
 ///
 
@@ -382,7 +382,7 @@ Por exemplo, este validador personalizado verifica se o ID do item começa com `
 
 {* ../../docs_src/query_params_str_validations/tutorial015_an_py310.py hl[5,16:19,24] *}
 
-/// info | Informação
+/// note | Nota
 
 Isso está disponível com a versão 2 do Pydantic ou superior. 😎
 
@@ -414,7 +414,7 @@ Percebeu? Uma string usando `value.startswith()` pode receber uma tupla, e verif
 
 Com `data.items()` obtemos um <dfn title="Algo que podemos iterar com um laço for, como uma list, set, etc.">objeto iterável</dfn> com tuplas contendo a chave e o valor de cada item do dicionário.
 
-Convertimos esse objeto iterável em uma `list` adequada com `list(data.items())`.
+Convertemos esse objeto iterável em uma `list` adequada com `list(data.items())`.
 
 Em seguida, com `random.choice()` podemos obter um valor aleatório da lista, então obtemos uma tupla com `(id, name)`. Será algo como `("imdb-tt0371724", "The Hitchhiker's Guide to the Galaxy")`.
 
index 472c12be64d0b164630ea3c878e4711654913631..d64e2dc64a3bd96c418dbfb3f9f52c1faf8de184 100644 (file)
@@ -65,7 +65,7 @@ Da mesma forma, você pode declarar parâmetros de consulta opcionais, definindo
 
 Nesse caso, o parâmetro da função `q` será opcional, e `None` será o padrão.
 
-/// check | Verifique
+/// tip | Dica
 
 Você também pode notar que o **FastAPI** é esperto o suficiente para perceber que o parâmetro da rota `item_id` é um parâmetro da rota, e `q` não é, portanto, `q` é o parâmetro de consulta.
 
index 912878cd52adb17da7c4e11b485b97c0ad8f68fe..72069c2685dc8b9761e9d2aec097aeba49ae31c4 100644 (file)
@@ -2,7 +2,7 @@
 
 Você pode definir arquivos para serem enviados pelo cliente usando `File`.
 
-/// info | Informação
+/// note | Nota
 
 Para receber arquivos enviados, primeiro instale [`python-multipart`](https://github.com/Kludex/python-multipart).
 
@@ -28,7 +28,7 @@ Crie parâmetros de arquivo da mesma forma que você faria para `Body` ou `Form`
 
 {* ../../docs_src/request_files/tutorial001_an_py310.py hl[9] *}
 
-/// info | Informação
+/// note | Nota
 
 `File` é uma classe que herda diretamente de `Form`.
 
index 953c3fdcee210ff8239229ae9893fcb5713bd946..8e265d6ad37a6503545e5c0d1c3a4bb84a72bdca 100644 (file)
@@ -2,7 +2,7 @@
 
 Você pode utilizar **Modelos Pydantic** para declarar **campos de formulários** no FastAPI.
 
-/// info | Informação
+/// note | Nota
 
 Para utilizar formulários, instale primeiramente o [`python-multipart`](https://github.com/Kludex/python-multipart).
 
@@ -28,7 +28,7 @@ Você precisa apenas declarar um **modelo Pydantic** com os campos que deseja re
 
 O **FastAPI** irá **extrair** as informações para **cada campo** dos **dados do formulário** na requisição e dar para você o modelo Pydantic que você definiu.
 
-## Confira os Documentos { #check-the-docs }
+## Confira a Documentação { #check-the-docs }
 
 Você pode verificar na UI de documentação em `/docs`:
 
index 04d7f9a4ebb003d0c6d112b859155570d04c59da..45d6f5c2c2bbd89508f80b45989a33202f68f877 100644 (file)
@@ -2,7 +2,7 @@
 
 Você pode definir arquivos e campos de formulário ao mesmo tempo usando `File` e `Form`.
 
-/// info | Informação
+/// note | Nota
 
 Para receber arquivos carregados e/ou dados de formulário, primeiro instale [`python-multipart`](https://github.com/Kludex/python-multipart).
 
index 5b7c4d809064e10a6db44aed10c24c4c9db04980..d99c516503ec0cc719e7be7e10f2cfdb854d65f0 100644 (file)
@@ -2,7 +2,7 @@
 
 Quando você precisar receber campos de formulário em vez de JSON, você pode usar `Form`.
 
-/// info | Informação
+/// note | Nota
 
 Para usar formulários, primeiro instale [`python-multipart`](https://github.com/Kludex/python-multipart).
 
@@ -32,7 +32,7 @@ A <dfn title="especificação">especificação</dfn> exige que os campos sejam e
 
 Com `Form` você pode declarar as mesmas configurações que com `Body` (e `Query`, `Path`, `Cookie`), incluindo validação, exemplos, um alias (por exemplo, `user-name` em vez de `username`), etc.
 
-/// info | Informação
+/// note | Nota
 
 `Form` é uma classe que herda diretamente de `Body`.
 
index 7a28bcecdd8781ced497a85f853797061da85fd1..1753f9dae151cfe140261dd2326d8565dee10a1d 100644 (file)
@@ -72,7 +72,7 @@ Aqui estamos declarando um modelo `UserIn`, ele conterá uma senha em texto simp
 
 {* ../../docs_src/response_model/tutorial002_py310.py hl[7,9] *}
 
-/// info | Informação
+/// note | Nota
 
 Para usar `EmailStr`, primeiro instale [`email-validator`](https://github.com/JoshData/python-email-validator).
 
@@ -251,7 +251,7 @@ Então, se você enviar uma solicitação para essa *operação de rota* para o
 }
 ```
 
-/// info | Informação
+/// note | Nota
 
 Você também pode usar:
 
index d5a81fa03bea9b62adaaaa9d5702687c90af1e12..f02aeb0b4783524071de5139c247ea9c1adcb317 100644 (file)
@@ -18,7 +18,7 @@ Observe que `status_code` é um parâmetro do método "decorador" (`get`, `post`
 
 O parâmetro `status_code` recebe um número com o código de status HTTP.
 
-/// info | Informação
+/// note | Nota
 
 `status_code` também pode receber um `IntEnum`, como [`http.HTTPStatus`](https://docs.python.org/3/library/http.html#http.HTTPStatus) do Python.
 
index cd2ac13c5f75e6da9bd5bc2dc87ff2fd10b5803c..2feeb54389af6e8edafae5f665db3439ddb9be38 100644 (file)
@@ -24,7 +24,7 @@ Por exemplo, você poderia usá-la para adicionar metadados para uma interface d
 
 ///
 
-/// info | Informação
+/// note | Nota
 
 O OpenAPI 3.1.0 (usado desde o FastAPI 0.99.0) adicionou suporte a `examples`, que faz parte do padrão **JSON Schema**.
 
@@ -155,7 +155,7 @@ O OpenAPI também adicionou os campos `example` e `examples` a outras partes da
     * `File()`
     * `Form()`
 
-/// info | Informação
+/// note | Nota
 
 Esse parâmetro antigo `examples` específico do OpenAPI agora é `openapi_examples` desde o FastAPI `0.103.0`.
 
@@ -171,7 +171,7 @@ E agora esse novo campo `examples` tem precedência sobre o antigo campo único
 
 Esse novo campo `examples` no JSON Schema é **apenas uma `list`** de exemplos, não um dict com metadados extras como nos outros lugares do OpenAPI (descritos acima).
 
-/// info | Informação
+/// note | Nota
 
 Mesmo após o lançamento do OpenAPI 3.1.0 com essa nova integração mais simples com o JSON Schema, por um tempo o Swagger UI, a ferramenta que fornece a documentação automática, não suportava OpenAPI 3.1.0 (passou a suportar desde a versão 5.0.0 🎉).
 
index d16c15140e5c637d2dd71af6e6451389c5dad8af..fe5b4e704cf7486a3064c0b2255bb7cf6d0453b4 100644 (file)
@@ -24,7 +24,7 @@ Copie o exemplo em um arquivo `main.py`:
 
 ## Execute-o { #run-it }
 
-/// info | Informação
+/// note | Nota
 
 O pacote [`python-multipart`](https://github.com/Kludex/python-multipart) é instalado automaticamente com o **FastAPI** quando você executa o comando `pip install "fastapi[standard]"`.
 
@@ -60,7 +60,7 @@ Você verá algo deste tipo:
 
 <img src="/img/tutorial/security/image01.png">
 
-/// check | Botão Autorizar!
+/// tip | Botão Autorizar!
 
 Você já tem um novo botão 'Authorize'.
 
@@ -118,7 +118,7 @@ O **FastAPI** fornece várias ferramentas, em diferentes níveis de abstração,
 
 Neste exemplo, vamos usar **OAuth2**, com o fluxo **Password**, usando um token **Bearer**. Fazemos isso usando a classe `OAuth2PasswordBearer`.
 
-/// info | Informação
+/// note | Nota
 
 Um token "bearer" não é a única opção.
 
@@ -148,7 +148,7 @@ Esse parâmetro não cria aquele endpoint/operação de rota, mas declara que a
 
 Em breve também criaremos a operação de rota real.
 
-/// info | Informação
+/// note | Nota
 
 Se você é um "Pythonista" muito rigoroso, pode não gostar do estilo do nome do parâmetro `tokenUrl` em vez de `token_url`.
 
@@ -176,7 +176,7 @@ Essa dependência fornecerá uma `str` que é atribuída ao parâmetro `token` d
 
 O **FastAPI** saberá que pode usar essa dependência para definir um "esquema de segurança" no esquema OpenAPI (e na documentação automática da API).
 
-/// info | Detalhes Técnicos
+/// note | Detalhes Técnicos
 
 O **FastAPI** saberá que pode usar a classe `OAuth2PasswordBearer` (declarada em uma dependência) para definir o esquema de segurança no OpenAPI porque ela herda de `fastapi.security.oauth2.OAuth2`, que por sua vez herda de `fastapi.security.base.SecurityBase`.
 
index 4c6397c31f2da1b011bac3f8435683964d471dc5..2c505f148b948434fe7ed9b53bae6e43c6b05c05 100644 (file)
@@ -18,7 +18,7 @@ Da mesma forma que usamos o Pydantic para declarar corpos, podemos usá-lo em qu
 
 ## Criar uma dependência `get_current_user` { #create-a-get-current-user-dependency }
 
-Vamos criar uma dependência chamada `get_current_user`.
+Vamos criar uma dependência `get_current_user`.
 
 Lembra que as dependências podem ter subdependências?
 
@@ -52,7 +52,7 @@ Aqui, o **FastAPI** não ficará confuso porque você está usando `Depends`.
 
 ///
 
-/// check | Verifique
+/// tip | Dica
 
 A forma como esse sistema de dependências foi projetado nos permite ter diferentes dependências (diferentes "dependables") que retornam um modelo `User`.
 
index 6397664fbfd7d6be69508d2e2bb828b00ddeab0b..a571b799dcdd9d8922c2eadacd5f870b19b2f08a 100644 (file)
@@ -42,9 +42,9 @@ $ pip install pyjwt
 
 </div>
 
-/// info | Informação
+/// note | Nota
 
-Se você pretente utilizar algoritmos de assinatura digital como o RSA ou o ECDSA, você deve instalar a dependência da biblioteca de criptografia `pyjwt[crypto]`.
+Se você pretende utilizar algoritmos de assinatura digital como o RSA ou o ECDSA, você deve instalar a dependência da biblioteca de criptografia `pyjwt[crypto]`.
 
 Você pode ler mais sobre isso na [documentação de instalação do PyJWT](https://pyjwt.readthedocs.io/en/latest/installation.html).
 
@@ -213,7 +213,7 @@ Usando as credenciais:
 Username: `johndoe`
 Password: `secret`
 
-/// check | Verifique
+/// tip | Dica
 
 Observe que em nenhuma parte do código está a senha em texto puro "`secret`", nós temos apenas o hash.
 
index f582a81417dbc35c46a05d3ea9237d4c31c43800..fdfe21a264c6ff4eefc980a5c8ad797a3a3b3ef0 100644 (file)
@@ -4,7 +4,7 @@ Agora vamos construir a partir do capítulo anterior e adicionar as partes que f
 
 ## Obtenha o `username` e a `password` { #get-the-username-and-password }
 
-É utilizado o utils de segurança da **FastAPI** para obter o `username` e a `password`.
+Vamos usar os utilitários de segurança da **FastAPI** para obter o `username` e a `password`.
 
 OAuth2 especifica que ao usar o "password flow" (fluxo de senha), que estamos usando, o cliente/usuário deve enviar os campos `username` e `password` como dados do formulário.
 
@@ -32,7 +32,7 @@ Normalmente são usados para declarar permissões de segurança específicas, po
 * `instagram_basic` é usado pelo Facebook e Instagram.
 * `https://www.googleapis.com/auth/drive` é usado pelo Google.
 
-/// info | Informação
+/// note | Nota
 
 No OAuth2, um "scope" é apenas uma string que declara uma permissão específica necessária.
 
@@ -72,7 +72,7 @@ Se você precisar aplicá-lo, use `OAuth2PasswordRequestFormStrict` em vez de `O
 * Um `client_id` opcional (não precisamos dele em nosso exemplo).
 * Um `client_secret` opcional (não precisamos dele em nosso exemplo).
 
-/// info | Informação
+/// note | Nota
 
 O `OAuth2PasswordRequestForm` não é uma classe especial para **FastAPI** como é `OAuth2PasswordBearer`.
 
@@ -144,8 +144,7 @@ UserInDB(
 )
 ```
 
-
-/// info | Informação
+/// note | Nota
 
 Para uma explicação mais completa de `**user_dict`, verifique [a documentação para **Extra Models**](../extra-models.md#about-user-in-dict).
 
@@ -173,7 +172,7 @@ Mas, por enquanto, vamos nos concentrar nos detalhes específicos de que precisa
 
 /// tip | Dica
 
-Pela especificação, você deve retornar um JSON com um `access_token` e um `token_type`, o mesmo que neste exemplo.
+Pela especificação, você deveria retornar um JSON com um `access_token` e um `token_type`, o mesmo que neste exemplo.
 
 Isso é algo que você mesmo deve fazer em seu código e certifique-se de usar essas chaves JSON.
 
@@ -197,7 +196,7 @@ Portanto, em nosso endpoint, só obteremos um usuário se o usuário existir, ti
 
 {* ../../docs_src/security/tutorial003_an_py310.py hl[58:66,69:74,94] *}
 
-/// info | Informação
+/// note | Nota
 
 O cabeçalho adicional `WWW-Authenticate` com valor `Bearer` que estamos retornando aqui também faz parte da especificação.
 
@@ -217,7 +216,7 @@ Esse é o benefício dos padrões...
 
 ## Veja em ação { #see-it-in-action }
 
-Abra o docs interativo: [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs).
+Abra a documentação interativa: [http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs).
 
 ### Autentique-se { #authenticate }
 
index 33389873ce824b2404999ca1f2ab13737e863500..63d82c3210eb36eccc7511023f62846d5af186ee 100644 (file)
@@ -4,7 +4,7 @@ Você pode transmitir dados para o cliente usando Server-Sent Events (SSE).
 
 Isso é semelhante a [Stream de JSON Lines](stream-json-lines.md), mas usa o formato `text/event-stream`, que é suportado nativamente pelos navegadores com a [`EventSource` API](https://developer.mozilla.org/en-US/docs/Web/API/EventSource).
 
-/// info | Informação
+/// note | Nota
 
 Adicionado no FastAPI 0.135.0.
 
index f6d5c26f091d992e6db0b74b2d9e1c0a05c84fce..a76bacd11a66adccef417dd878d84c5fb298b3e9 100644 (file)
@@ -2,7 +2,7 @@
 
 Você pode ter uma sequência de dados que deseja enviar em um "**Stream**"; é possível fazer isso com **JSON Lines**.
 
-/// info | Informação
+/// note | Nota
 
 Adicionado no FastAPI 0.134.0.
 
@@ -48,7 +48,7 @@ Uma response teria um tipo de conteúdo `application/jsonl` (em vez de `applicat
 
 É muito semelhante a um array JSON (equivalente a uma list do Python), mas em vez de estar envolto em `[]` e ter `,` entre os itens, há **um objeto JSON por linha**, separados por um caractere de nova linha.
 
-/// info | Informação
+/// note | Nota
 
 O ponto importante é que sua aplicação poderá produzir cada linha em sequência, enquanto o cliente consome as anteriores.
 
index 1730511e6db2d4c09ca30fbd377db94d29af8eb0..e185102aea071effba5bfb9cf4ac3ec9e6c686f9 100644 (file)
@@ -8,7 +8,7 @@ Com ele, você pode usar o [pytest](https://docs.pytest.org/) diretamente com **
 
 ## Usando `TestClient` { #using-testclient }
 
-/// info | Informação
+/// note | Nota
 
 Para usar o `TestClient`, primeiro instale [`httpx`](https://www.python-httpx.org).
 
@@ -142,7 +142,7 @@ Por exemplo:
 
 Para mais informações sobre como passar dados para o backend (usando `httpx` ou `TestClient`), consulte a [documentação do HTTPX](https://www.python-httpx.org).
 
-/// info | Informação
+/// note | Nota
 
 Observe que o `TestClient` recebe dados que podem ser convertidos para JSON, não para modelos Pydantic.