Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

馃寪 Add Portuguese translation for docs/pt/docs/tutorial/query-params.md #4775

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
224 changes: 224 additions & 0 deletions docs/pt/docs/tutorial/query-params.md
@@ -0,0 +1,224 @@
# Par芒metros de Consulta

Quando voc锚 declara outros par芒metros na fun莽茫o que n茫o fazem parte dos par芒metros da rota, esses par芒metros s茫o automaticamente interpretados como par芒metros de "consulta".

```Python hl_lines="9"
{!../../../docs_src/query_params/tutorial001.py!}
```

A consulta 茅 o conjunto de pares chave-valor que vai depois de `?` na URL, separado pelo caractere `&`.

Por exemplo, na URL:

```
http://127.0.0.1:8000/items/?skip=0&limit=10
```

...os par芒metros da consulta s茫o:

* `skip`: com o valor `0`
* `limit`: com o valor `10`

Como eles s茫o parte da URL, eles s茫o "naturalmente" strings.

Mas quando voc锚 declara eles com os tipos do Python (no exemplo acima, como `int`), eles s茫o convertidos para aquele tipo e validados em rela莽茫o a ele.

Todo o processo que era aplicado para par芒metros de rota tamb茅m 茅 aplicado para par芒metros de consulta:

* Suporte do editor (obviamente)
* <abbr title="convertendo uma string que vem de um request HTTP em um dado Python">"Parsing"</abbr> de dados
* Valida莽茫o de dados
* Documenta莽茫o autom谩tica

## Valores padr茫o

Como os par芒metros de consulta n茫o s茫o uma parte fixa da rota, eles podem ser opcionais e podem ter valores padr茫o.

No exemplo acima eles tem valores padr茫o de `skip=0` e `limit=10`.

Ent茫o, se voc锚 for at茅 a URL:

```
http://127.0.0.1:8000/items/
```

Seria o mesmo que ir para:

```
http://127.0.0.1:8000/items/?skip=0&limit=10
```

Mas, se por exemplo voc锚 for para:

```
http://127.0.0.1:8000/items/?skip=20
```

Os valores dos par芒metros na sua fun莽茫o ser茫o:

* `skip=20`: Por que voc锚 definiu isso na URL
* `limit=10`: Por que esse era o valor padr茫o

## Par芒metros opcionais

Da mesma forma, voc锚 pode declarar par芒metros de consulta opcionais, definindo o valor padr茫o para `None`:

=== "Python 3.6 and above"

```Python hl_lines="9"
{!> ../../../docs_src/query_params/tutorial002.py!}
```

=== "Python 3.10 and above"

```Python hl_lines="7"
{!> ../../../docs_src/query_params/tutorial002_py310.py!}
```

Nesse caso, o par芒metro da fun莽茫o `q` ser谩 opcional, e `None` ser谩 o padr茫o.

!!! check "Verificar"
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.


## Convers茫o dos tipos de par芒metros de consulta

Voc锚 tamb茅m pode declarar tipos `bool`, e eles ser茫o convertidos:

=== "Python 3.6 and above"

```Python hl_lines="9"
{!> ../../../docs_src/query_params/tutorial003.py!}
```

=== "Python 3.10 and above"

```Python hl_lines="7"
{!> ../../../docs_src/query_params/tutorial003_py310.py!}
```

Nesse caso, se voc锚 for para:

```
http://127.0.0.1:8000/items/foo?short=1
```

ou

```
http://127.0.0.1:8000/items/foo?short=True
```

ou

```
http://127.0.0.1:8000/items/foo?short=true
```

ou

```
http://127.0.0.1:8000/items/foo?short=on
```

ou

```
http://127.0.0.1:8000/items/foo?short=yes
```

ou qualquer outra varia莽茫o (tudo em mai煤scula, primeira letra em mai煤scula, etc), a sua fun莽茫o vai ver o par芒metro `short` com um valor `bool` de `True`. Caso contr谩rio `False`.

## M煤ltiplos par芒metros de rota e consulta

Voc锚 pode declarar m煤ltiplos par芒metros de rota e par芒metros de consulta ao mesmo tempo, o **FastAPI** vai saber o qu锚 茅 o qu锚.

E voc锚 n茫o precisa declarar eles em nenhuma ordem espec铆fica.

Eles ser茫o detectados pelo nome:

=== "Python 3.6 and above"

```Python hl_lines="8 10"
{!> ../../../docs_src/query_params/tutorial004.py!}
```

=== "Python 3.10 and above"

```Python hl_lines="6 8"
{!> ../../../docs_src/query_params/tutorial004_py310.py!}
```

## Par芒metros de consulta obrigat贸rios

Quando voc锚 declara um valor padr茫o para par芒metros que n茫o s茫o de rota (at茅 agora, n贸s vimos apenas par芒metros de consulta), ent茫o eles n茫o s茫o obrigat贸rios.

Caso voc锚 n茫o queira adicionar um valor espec铆fico mas queira apenas torn谩-lo opcional, defina o valor padr茫o como `None`.

Por茅m, quando voc锚 quiser fazer com que o par芒metro de consulta seja obrigat贸rio, voc锚 pode simplesmente n茫o declarar nenhum valor como padr茫o.

```Python hl_lines="6-7"
{!../../../docs_src/query_params/tutorial005.py!}
```

Aqui o par芒metro de consulta `needy` 茅 um valor obrigat贸rio, do tipo `str`.

Se voc锚 abrir no seu navegador a URL:

```
http://127.0.0.1:8000/items/foo-item
```

... sem adicionar o par芒metro obrigat贸rio `needy`, voc锚 ver谩 um erro como:

```JSON
{
"detail": [
{
"loc": [
"query",
"needy"
],
"msg": "field required",
"type": "value_error.missing"
}
]
}
```

Como `needy` 茅 um par芒metro obrigat贸rio, voc锚 precisaria defini-lo na URL:

```
http://127.0.0.1:8000/items/foo-item?needy=sooooneedy
```

...isso deve funcionar:

```JSON
{
"item_id": "foo-item",
"needy": "sooooneedy"
}
```

E claro, voc锚 pode definir alguns par芒metros como obrigat贸rios, alguns possuindo um valor padr茫o, e outros sendo totalmente opcionais:

=== "Python 3.6 and above"

```Python hl_lines="10"
{!> ../../../docs_src/query_params/tutorial006.py!}
```

=== "Python 3.10 and above"

```Python hl_lines="8"
{!> ../../../docs_src/query_params/tutorial006_py310.py!}
```
Nesse caso, existem 3 par芒metros de consulta:

* `needy`, um `str` obrigat贸rio.
* `skip`, um `int` com o valor padr茫o `0`.
* `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}.
1 change: 1 addition & 0 deletions docs/pt/mkdocs.yml
Expand Up @@ -64,6 +64,7 @@ nav:
- tutorial/index.md
- tutorial/first-steps.md
- tutorial/path-params.md
- tutorial/query-params.md
- tutorial/body.md
- tutorial/body-fields.md
- tutorial/extra-data-types.md
Expand Down