mirror of
https://github.com/fastapi/fastapi.git
synced 2026-05-24 16:29:41 -04:00
📝 Add docs recommending Union over Optional and migrate source examples (#4908)
* 📝 Add docs recommending Union over Optional * 📝 Update docs recommending Union over Optional * 📝 Update source examples for docs, recommend Union over Optional * 📝 Update highlighted lines with updated source examples * 📝 Update highlighted lines in Markdown with recent code changes * 📝 Update docs, use Union instead of Optional * ♻️ Update source examples to recommend Union over Optional * 🎨 Update highlighted code in Markdown after moving from Optional to Union
This commit is contained in:
committed by
GitHub
parent
c5be1b0550
commit
ca437cdfab
@@ -158,7 +158,7 @@ Os parâmetros da função serão reconhecidos conforme abaixo:
|
||||
!!! note "Observação"
|
||||
O FastAPI saberá que o valor de `q` não é obrigatório por causa do valor padrão `= None`.
|
||||
|
||||
O `Optional` em `Optional[str]` não é utilizado pelo FastAPI, mas permite ao seu editor de texto lhe dar um suporte melhor e detectar erros.
|
||||
O `Union` em `Union[str, None]` não é utilizado pelo FastAPI, mas permite ao seu editor de texto lhe dar um suporte melhor e detectar erros.
|
||||
|
||||
## Sem o Pydantic
|
||||
|
||||
|
||||
@@ -8,12 +8,12 @@ Vamos utilizar essa aplicação como exemplo:
|
||||
{!../../../docs_src/query_params_str_validations/tutorial001.py!}
|
||||
```
|
||||
|
||||
O parâmetro de consulta `q` é do tipo `Optional[str]`, o que significa que é do tipo `str` mas que também pode ser `None`, e de fato, o valor padrão é `None`, então o FastAPI saberá que não é obrigatório.
|
||||
O parâmetro de consulta `q` é do tipo `Union[str, None]`, o que significa que é do tipo `str` mas que também pode ser `None`, e de fato, o valor padrão é `None`, então o FastAPI saberá que não é obrigatório.
|
||||
|
||||
!!! note "Observação"
|
||||
O FastAPI saberá que o valor de `q` não é obrigatório por causa do valor padrão `= None`.
|
||||
|
||||
O `Optional` em `Optional[str]` não é usado pelo FastAPI, mas permitirá que seu editor lhe dê um melhor suporte e detecte erros.
|
||||
O `Union` em `Union[str, None]` não é usado pelo FastAPI, mas permitirá que seu editor lhe dê um melhor suporte e detecte erros.
|
||||
|
||||
## Validação adicional
|
||||
|
||||
@@ -35,18 +35,18 @@ Agora utilize-o como valor padrão do seu parâmetro, definindo o parâmetro `ma
|
||||
{!../../../docs_src/query_params_str_validations/tutorial002.py!}
|
||||
```
|
||||
|
||||
Note que substituímos o valor padrão de `None` para `Query(None)`, o primeiro parâmetro de `Query` serve para o mesmo propósito: definir o valor padrão do parâmetro.
|
||||
Note que substituímos o valor padrão de `None` para `Query(default=None)`, o primeiro parâmetro de `Query` serve para o mesmo propósito: definir o valor padrão do parâmetro.
|
||||
|
||||
Então:
|
||||
|
||||
```Python
|
||||
q: Optional[str] = Query(None)
|
||||
q: Union[str, None] = Query(default=None)
|
||||
```
|
||||
|
||||
...Torna o parâmetro opcional, da mesma maneira que:
|
||||
|
||||
```Python
|
||||
q: Optional[str] = None
|
||||
q: Union[str, None] = None
|
||||
```
|
||||
|
||||
Mas o declara explicitamente como um parâmetro de consulta.
|
||||
@@ -61,17 +61,17 @@ Mas o declara explicitamente como um parâmetro de consulta.
|
||||
Ou com:
|
||||
|
||||
```Python
|
||||
= Query(None)
|
||||
= Query(default=None)
|
||||
```
|
||||
|
||||
E irá utilizar o `None` para detectar que o parâmetro de consulta não é obrigatório.
|
||||
|
||||
O `Optional` é apenas para permitir que seu editor de texto lhe dê um melhor suporte.
|
||||
O `Union` é apenas para permitir que seu editor de texto lhe dê um melhor suporte.
|
||||
|
||||
Então, podemos passar mais parâmetros para `Query`. Neste caso, o parâmetro `max_length` que se aplica a textos:
|
||||
|
||||
```Python
|
||||
q: str = Query(None, max_length=50)
|
||||
q: str = Query(default=None, max_length=50)
|
||||
```
|
||||
|
||||
Isso irá validar os dados, mostrar um erro claro quando os dados forem inválidos, e documentar o parâmetro na *operação de rota* do esquema OpenAPI..
|
||||
@@ -80,7 +80,7 @@ Isso irá validar os dados, mostrar um erro claro quando os dados forem inválid
|
||||
|
||||
Você também pode incluir um parâmetro `min_length`:
|
||||
|
||||
```Python hl_lines="9"
|
||||
```Python hl_lines="10"
|
||||
{!../../../docs_src/query_params_str_validations/tutorial003.py!}
|
||||
```
|
||||
|
||||
@@ -88,7 +88,7 @@ Você também pode incluir um parâmetro `min_length`:
|
||||
|
||||
Você pode definir uma <abbr title="Uma expressão regular, regex ou regexp é uma sequência de caracteres que define um parâmetro de busca para textos.">expressão regular</abbr> que combine com um padrão esperado pelo parâmetro:
|
||||
|
||||
```Python hl_lines="10"
|
||||
```Python hl_lines="11"
|
||||
{!../../../docs_src/query_params_str_validations/tutorial004.py!}
|
||||
```
|
||||
|
||||
@@ -126,13 +126,13 @@ q: str
|
||||
em vez desta:
|
||||
|
||||
```Python
|
||||
q: Optional[str] = None
|
||||
q: Union[str, None] = None
|
||||
```
|
||||
|
||||
Mas agora nós o estamos declarando como `Query`, conforme abaixo:
|
||||
|
||||
```Python
|
||||
q: Optional[str] = Query(None, min_length=3)
|
||||
q: Union[str, None] = Query(default=None, min_length=3)
|
||||
```
|
||||
|
||||
Então, quando você precisa declarar um parâmetro obrigatório utilizando o `Query`, você pode utilizar `...` como o primeiro argumento:
|
||||
|
||||
Reference in New Issue
Block a user