mirror of
https://github.com/fastapi/fastapi.git
synced 2026-07-13 16:33:11 -04:00
🌐 Update Portuguese translations with LLM prompt (#14228)
* validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * validated llm translation * fix non-Annotated in llm-prompt * rerun after a few changes in llm-prompt * fix non-Annotated * validated llm translation * fix llm translation * update outdated translations * fix translation for operation IDs * add header link * add missing link * fix line break * fix diff * fix llm translation * fix 'Atualize' to 'Atualizar' * update alternatives.md * update async.md * update fastapi-cli.md * update features.md * update help-fastapi.md * update history-design-future.md * update index.md * update advanced/events.md * update advanced/middleware.md * update advanced/response-cookies.md * update advanced/response-headers.md * update advanced/templates.md * update advanced/testing-websockets.md * update advanced/using-request-directly.md * update advanced/websockets.md * update advanced/security/oauth2-scopes.md * update deployment/cloud.md * update deployment/manually.md * update how-to/custom-request-and-route.md * update how-to/migrate-from-pydantic-v1-to-pydantic-v2.md * update tutorial/background-tasks.md * update tutorial/first-steps.md * update tutorial/handling-errors.md * update tutorial/middleware.md * update tutorial/request-files.md * update tutorial/sql-databases.md * update tutorial/static-files.md * update tutorial/testing.md * update tutorial/dependencies/dependencies-with-yield.md * update advanced/advanced-dependencies.md --------- Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
1a2e4152ed
commit
540a83da65
@@ -1,4 +1,4 @@
|
||||
# Middleware
|
||||
# Middleware { #middleware }
|
||||
|
||||
Você pode adicionar middleware à suas aplicações **FastAPI**.
|
||||
|
||||
@@ -11,15 +11,15 @@ Um "middleware" é uma função que manipula cada **requisição** antes de ser
|
||||
* Ele pode fazer algo com essa **resposta** ou executar qualquer código necessário.
|
||||
* Então ele retorna a **resposta**.
|
||||
|
||||
/// note | Detalhes técnicos
|
||||
/// note | Detalhes Técnicos
|
||||
|
||||
Se você tiver dependências com `yield`, o código de saída será executado *depois* do middleware.
|
||||
|
||||
Se houver alguma tarefa em segundo plano (documentada posteriormente), ela será executada *depois* de todo o middleware.
|
||||
Se houver alguma tarefa em segundo plano (abordada na seção [Tarefas em segundo plano](background-tasks.md){.internal-link target=_blank}, que você verá mais adiante), ela será executada *depois* de todo o middleware.
|
||||
|
||||
///
|
||||
|
||||
## Criar um middleware
|
||||
## Criar um middleware { #create-a-middleware }
|
||||
|
||||
Para criar um middleware, use o decorador `@app.middleware("http")` logo acima de uma função.
|
||||
|
||||
@@ -35,13 +35,13 @@ A função middleware recebe:
|
||||
|
||||
/// tip | Dica
|
||||
|
||||
Tenha em mente que cabeçalhos proprietários personalizados podem ser adicionados <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers" class="external-link" target="_blank">usando o prefixo 'X-'</a>.
|
||||
Tenha em mente que cabeçalhos proprietários personalizados podem ser adicionados <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers" class="external-link" target="_blank">usando o prefixo `X-`</a>.
|
||||
|
||||
Mas se você tiver cabeçalhos personalizados desejando que um cliente em um navegador esteja apto a ver, você precisa adicioná-los às suas configurações CORS ([CORS (Cross-Origin Resource Sharing)](cors.md){.internal-link target=_blank}) usando o parâmetro `expose_headers` documentado em <a href="https://www.starlette.dev/middleware/#corsmiddleware" class="external-link" target="_blank">Documentos CORS da Starlette</a>.
|
||||
|
||||
///
|
||||
|
||||
/// note | Detalhes técnicos
|
||||
/// note | Detalhes Técnicos
|
||||
|
||||
Você também pode usar `from starlette.requests import Request`.
|
||||
|
||||
@@ -49,7 +49,7 @@ Você também pode usar `from starlette.requests import Request`.
|
||||
|
||||
///
|
||||
|
||||
### Antes e depois da `response`
|
||||
### Antes e depois da `response` { #before-and-after-the-response }
|
||||
|
||||
Você pode adicionar código para ser executado com a `request`, antes que qualquer *operação de rota* o receba.
|
||||
|
||||
@@ -59,7 +59,36 @@ Por exemplo, você pode adicionar um cabeçalho personalizado `X-Process-Time` c
|
||||
|
||||
{* ../../docs_src/middleware/tutorial001.py hl[10,12:13] *}
|
||||
|
||||
## Outros middlewares
|
||||
/// tip | Dica
|
||||
|
||||
Aqui usamos <a href="https://docs.python.org/3/library/time.html#time.perf_counter" class="external-link" target="_blank">`time.perf_counter()`</a> em vez de `time.time()` porque ele pode ser mais preciso para esses casos de uso. 🤓
|
||||
|
||||
///
|
||||
|
||||
## Ordem de execução de múltiplos middlewares { #multiple-middleware-execution-order }
|
||||
|
||||
Quando você adiciona múltiplos middlewares usando o decorador `@app.middleware()` ou o método `app.add_middleware()`, cada novo middleware envolve a aplicação, formando uma pilha. O último middleware adicionado é o mais externo, e o primeiro é o mais interno.
|
||||
|
||||
No caminho da requisição, o middleware mais externo roda primeiro.
|
||||
|
||||
No caminho da resposta, ele roda por último.
|
||||
|
||||
Por exemplo:
|
||||
|
||||
```Python
|
||||
app.add_middleware(MiddlewareA)
|
||||
app.add_middleware(MiddlewareB)
|
||||
```
|
||||
|
||||
Isso resulta na seguinte ordem de execução:
|
||||
|
||||
* **Requisição**: MiddlewareB → MiddlewareA → rota
|
||||
|
||||
* **Resposta**: rota → MiddlewareA → MiddlewareB
|
||||
|
||||
Esse comportamento de empilhamento garante que os middlewares sejam executados em uma ordem previsível e controlável.
|
||||
|
||||
## Outros middlewares { #other-middlewares }
|
||||
|
||||
Mais tarde, você pode ler mais sobre outros middlewares no [Guia do usuário avançado: Middleware avançado](../advanced/middleware.md){.internal-link target=_blank}.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user