mirror of
https://github.com/fastapi/fastapi.git
synced 2026-05-17 21:06:42 -04:00
📝 Tweak docs and translations links, typos, format (#11389)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
This commit is contained in:
@@ -20,7 +20,7 @@ E você também pode declarar parâmetros de corpo como opcionais, definindo o v
|
||||
{!> ../../../docs_src/body_multiple_params/tutorial001.py!}
|
||||
```
|
||||
|
||||
!!! nota
|
||||
!!! note "Nota"
|
||||
Repare que, neste caso, o `item` que seria capturado a partir do corpo é opcional. Visto que ele possui `None` como valor padrão.
|
||||
|
||||
## Múltiplos parâmetros de corpo
|
||||
@@ -69,7 +69,7 @@ Então, ele usará o nome dos parâmetros como chaves (nome dos campos) no corpo
|
||||
}
|
||||
```
|
||||
|
||||
!!! nota
|
||||
!!! note "Nota"
|
||||
Repare que mesmo que o `item` esteja declarado da mesma maneira que antes, agora é esperado que ele esteja dentro do corpo com uma chave `item`.
|
||||
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ Isso vai esperar(converter, validar, documentar, etc) um corpo JSON tal qual:
|
||||
}
|
||||
```
|
||||
|
||||
!!! Informação
|
||||
!!! info "informação"
|
||||
Note como o campo `images` agora tem uma lista de objetos de image.
|
||||
|
||||
## Modelos profundamente aninhados
|
||||
@@ -176,7 +176,7 @@ Você pode definir modelos profundamente aninhados de forma arbitrária:
|
||||
{!../../../docs_src/body_nested_models/tutorial007.py!}
|
||||
```
|
||||
|
||||
!!! Informação
|
||||
!!! info "informação"
|
||||
Note como `Offer` tem uma lista de `Item`s, que por sua vez possui opcionalmente uma lista `Image`s
|
||||
|
||||
## Corpos de listas puras
|
||||
@@ -226,7 +226,7 @@ Neste caso, você aceitaria qualquer `dict`, desde que tenha chaves` int` com va
|
||||
{!../../../docs_src/body_nested_models/tutorial009.py!}
|
||||
```
|
||||
|
||||
!!! Dica
|
||||
!!! tip "Dica"
|
||||
Leve em condideração que o JSON só suporta `str` como chaves.
|
||||
|
||||
Mas o Pydantic tem conversão automática de dados.
|
||||
|
||||
@@ -162,4 +162,4 @@ Os parâmetros da função serão reconhecidos conforme abaixo:
|
||||
|
||||
## Sem o Pydantic
|
||||
|
||||
Se você não quer utilizar os modelos Pydantic, você também pode utilizar o parâmetro **Body**. Veja a documentação para [Body - Parâmetros múltiplos: Valores singulares no body](body-multiple-params.md#singular-values-in-body){.internal-link target=_blank}.
|
||||
Se você não quer utilizar os modelos Pydantic, você também pode utilizar o parâmetro **Body**. Veja a documentação para [Body - Parâmetros múltiplos: Valores singulares no body](body-multiple-params.md#valores-singulares-no-corpo){.internal-link target=_blank}.
|
||||
|
||||
@@ -38,5 +38,5 @@ O resultado de chamar a função é algo que pode ser codificado com o padrão d
|
||||
|
||||
A função não retorna um grande `str` contendo os dados no formato JSON (como uma string). Mas sim, retorna uma estrutura de dados padrão do Python (por exemplo, um `dict`) com valores e subvalores compatíveis com JSON.
|
||||
|
||||
!!! nota
|
||||
!!! note "Nota"
|
||||
`jsonable_encoder` é realmente usado pelo **FastAPI** internamente para converter dados. Mas também é útil em muitos outros cenários.
|
||||
|
||||
@@ -24,7 +24,7 @@ $ uvicorn main:app --reload
|
||||
|
||||
</div>
|
||||
|
||||
!!! nota
|
||||
!!! note "Nota"
|
||||
O comando `uvicorn main:app` se refere a:
|
||||
|
||||
* `main`: o arquivo `main.py` (o "módulo" Python).
|
||||
@@ -136,7 +136,7 @@ Você também pode usá-lo para gerar código automaticamente para clientes que
|
||||
|
||||
`FastAPI` é uma classe Python que fornece todas as funcionalidades para sua API.
|
||||
|
||||
!!! nota "Detalhes técnicos"
|
||||
!!! note "Detalhes técnicos"
|
||||
`FastAPI` é uma classe que herda diretamente de `Starlette`.
|
||||
|
||||
Você pode usar todas as funcionalidades do <a href="https://www.starlette.io/" class="external-link" target="_blank">Starlette</a> com `FastAPI` também.
|
||||
@@ -309,7 +309,7 @@ Você também pode defini-la como uma função normal em vez de `async def`:
|
||||
{!../../../docs_src/first_steps/tutorial003.py!}
|
||||
```
|
||||
|
||||
!!! nota
|
||||
!!! note "Nota"
|
||||
Se você não sabe a diferença, verifique o [Async: *"Com pressa?"*](../async.md#com-pressa){.internal-link target=_blank}.
|
||||
|
||||
### Passo 5: retorne o conteúdo
|
||||
|
||||
@@ -52,7 +52,7 @@ $ pip install "fastapi[all]"
|
||||
|
||||
...isso também inclui o `uvicorn`, que você pode usar como o servidor que rodará seu código.
|
||||
|
||||
!!! nota
|
||||
!!! note "Nota"
|
||||
Você também pode instalar parte por parte.
|
||||
|
||||
Isso é provavelmente o que você faria quando você quisesse lançar sua aplicação em produção:
|
||||
|
||||
@@ -24,7 +24,7 @@ Você pode declarar o tipo de um parâmetro na função usando as anotações pa
|
||||
|
||||
Nesse caso, `item_id` está sendo declarado como um `int`.
|
||||
|
||||
!!! Check Verifique
|
||||
!!! check "Verifique"
|
||||
Isso vai dar à você suporte do seu editor dentro das funções, com verificações de erros, autocompletar, etc.
|
||||
|
||||
## Conversão de <abbr title="também conhecido como: serialização, parsing, marshalling">dados</abbr>
|
||||
@@ -35,7 +35,7 @@ Se você rodar esse exemplo e abrir o seu navegador em <a href="http://127.0.0.1
|
||||
{"item_id":3}
|
||||
```
|
||||
|
||||
!!! Verifique
|
||||
!!! check "Verifique"
|
||||
Observe que o valor recebido pela função (e também retornado por ela) é `3`, como um Python `int`, não como uma string `"3"`.
|
||||
|
||||
Então, com essa declaração de tipo, o **FastAPI** dá pra você um <abbr title="convertendo a string que veio do request HTTP em um dado Python">"parsing"</abbr> automático no request .
|
||||
@@ -63,7 +63,7 @@ devido ao parâmetro da rota `item_id` ter um valor `"foo"`, que não é um `int
|
||||
|
||||
O mesmo erro apareceria se você tivesse fornecido um `float` ao invés de um `int`, como em: <a href="http://127.0.0.1:8000/items/4.2" class="external-link" target="_blank">http://127.0.0.1:8000/items/4.2</a>
|
||||
|
||||
!!! Verifique
|
||||
!!! check "Verifique"
|
||||
Então, com a mesma declaração de tipo do Python, o **FastAPI** dá pra você validação de dados.
|
||||
|
||||
Observe que o erro também mostra claramente o ponto exato onde a validação não passou.
|
||||
@@ -76,7 +76,7 @@ Quando você abrir o seu navegador em <a href="http://127.0.0.1:8000/docs" class
|
||||
|
||||
<img src="/img/tutorial/path-params/image01.png">
|
||||
|
||||
!!! check
|
||||
!!! check "Verifique"
|
||||
Novamente, apenas com a mesma declaração de tipo do Python, o **FastAPI** te dá de forma automática e interativa a documentação (integrada com o Swagger UI).
|
||||
|
||||
Veja que o parâmetro de rota está declarado como sendo um inteiro (int).
|
||||
@@ -131,10 +131,10 @@ Assim, crie atributos de classe com valores fixos, que serão os valores válido
|
||||
{!../../../docs_src/path_params/tutorial005.py!}
|
||||
```
|
||||
|
||||
!!! informação
|
||||
!!! info "informação"
|
||||
<a href="https://docs.python.org/3/library/enum.html" class="external-link" target="_blank">Enumerations (ou enums) estão disponíveis no Python</a> desde a versão 3.4.
|
||||
|
||||
!!! dica
|
||||
!!! tip "Dica"
|
||||
Se você está se perguntando, "AlexNet", "ResNet", e "LeNet" são apenas nomes de <abbr title="técnicamente, modelos de arquitetura de Deep Learning">modelos</abbr> de Machine Learning (aprendizado de máquina).
|
||||
|
||||
### Declare um *parâmetro de rota*
|
||||
@@ -171,7 +171,7 @@ Você pode ter o valor exato de enumerate (um `str` nesse caso) usando `model_na
|
||||
{!../../../docs_src/path_params/tutorial005.py!}
|
||||
```
|
||||
|
||||
!!! conselho
|
||||
!!! tip "Dica"
|
||||
Você também poderia acessar o valor `"lenet"` com `ModelName.lenet.value`
|
||||
|
||||
#### Retorne *membros de enumeration*
|
||||
@@ -225,7 +225,7 @@ Então, você poderia usar ele com:
|
||||
{!../../../docs_src/path_params/tutorial004.py!}
|
||||
```
|
||||
|
||||
!!! dica
|
||||
!!! tip "Dica"
|
||||
Você poderia precisar que o parâmetro contivesse `/home/johndoe/myfile.txt`, com uma barra no inicio (`/`).
|
||||
|
||||
Neste caso, a URL deveria ser: `/files//home/johndoe/myfile.txt`, com barra dupla (`//`) entre `files` e `home`.
|
||||
|
||||
@@ -222,4 +222,4 @@ Nesse caso, existem 3 parâmetros de consulta:
|
||||
* `limit`, um `int` opcional.
|
||||
|
||||
!!! tip "Dica"
|
||||
Você também poderia usar `Enum` da mesma forma que com [Path Parameters](path-params.md#predefined-values){.internal-link target=_blank}.
|
||||
Você também poderia usar `Enum` da mesma forma que com [Path Parameters](path-params.md#valores-predefinidos){.internal-link target=_blank}.
|
||||
|
||||
@@ -25,7 +25,7 @@ Copie o exemplo em um arquivo `main.py`:
|
||||
|
||||
## Execute-o
|
||||
|
||||
!!! informação
|
||||
!!! info "informação"
|
||||
Primeiro, instale <a href="https://github.com/Kludex/python-multipart" class="external-link" target="_blank">`python-multipart`</a>.
|
||||
|
||||
Ex: `pip install python-multipart`.
|
||||
@@ -52,7 +52,7 @@ Você verá algo deste tipo:
|
||||
|
||||
<img src="/img/tutorial/security/image01.png">
|
||||
|
||||
!!! marque o "botão de Autorizar!"
|
||||
!!! check "Botão de Autorizar!"
|
||||
Você já tem um novo "botão de autorizar!".
|
||||
|
||||
E seu *path operation* tem um pequeno cadeado no canto superior direito que você pode clicar.
|
||||
@@ -61,7 +61,7 @@ E se você clicar, você terá um pequeno formulário de autorização para digi
|
||||
|
||||
<img src="/img/tutorial/security/image02.png">
|
||||
|
||||
!!! nota
|
||||
!!! note "Nota"
|
||||
Não importa o que você digita no formulário, não vai funcionar ainda. Mas nós vamos chegar lá.
|
||||
|
||||
Claro que este não é o frontend para os usuários finais, mas é uma ótima ferramenta automática para documentar interativamente toda sua API.
|
||||
@@ -104,7 +104,7 @@ Então, vamos rever de um ponto de vista simplificado:
|
||||
|
||||
Neste exemplo, nós vamos usar o **OAuth2** com o fluxo de **Senha**, usando um token **Bearer**. Fazemos isso usando a classe `OAuth2PasswordBearer`.
|
||||
|
||||
!!! informação
|
||||
!!! info "informação"
|
||||
Um token "bearer" não é a única opção.
|
||||
|
||||
Mas é a melhor no nosso caso.
|
||||
@@ -119,7 +119,7 @@ Quando nós criamos uma instância da classe `OAuth2PasswordBearer`, nós passam
|
||||
{!../../../docs_src/security/tutorial001.py!}
|
||||
```
|
||||
|
||||
!!! dica
|
||||
!!! tip "Dica"
|
||||
Esse `tokenUrl="token"` se refere a uma URL relativa que nós não criamos ainda. Como é uma URL relativa, é equivalente a `./token`.
|
||||
|
||||
Porque estamos usando uma URL relativa, se sua API estava localizada em `https://example.com/`, então irá referir-se à `https://example.com/token`. Mas se sua API estava localizada em `https://example.com/api/v1/`, então irá referir-se à `https://example.com/api/v1/token`.
|
||||
@@ -130,7 +130,7 @@ Esse parâmetro não cria um endpoint / *path operation*, mas declara que a URL
|
||||
|
||||
Em breve também criaremos o atual path operation.
|
||||
|
||||
!!! informação
|
||||
!!! info "informação"
|
||||
Se você é um "Pythonista" muito rigoroso, você pode não gostar do estilo do nome do parâmetro `tokenUrl` em vez de `token_url`.
|
||||
|
||||
Isso ocorre porque está utilizando o mesmo nome que está nas especificações do OpenAPI. Então, se você precisa investigar mais sobre qualquer um desses esquemas de segurança, você pode simplesmente copiar e colar para encontrar mais informações sobre isso.
|
||||
@@ -157,7 +157,7 @@ Esse dependência vai fornecer uma `str` que é atribuído ao parâmetro `token
|
||||
|
||||
A **FastAPI** saberá que pode usar essa dependência para definir um "esquema de segurança" no esquema da OpenAPI (e na documentação da API automática).
|
||||
|
||||
!!! informação "Detalhes técnicos"
|
||||
!!! info "Detalhes técnicos"
|
||||
**FastAPI** saberá que pode usar a classe `OAuth2PasswordBearer` (declarada na dependência) para definir o esquema de segurança na OpenAPI porque herda de `fastapi.security.oauth2.OAuth2`, que por sua vez herda de `fastapi.security.base.Securitybase`.
|
||||
|
||||
Todos os utilitários de segurança que se integram com OpenAPI (e na documentação da API automática) herdam de `SecurityBase`, é assim que **FastAPI** pode saber como integrá-los no OpenAPI.
|
||||
|
||||
Reference in New Issue
Block a user