Skip to content

Commit

Permalink
🌐 Add Portuguese translation for `docs/pt/docs/tutorial/path-params-n

Browse files Browse the repository at this point in the history

umeric-validations.md` (#4099)

Co-authored-by: Pedro Victor <32584628+peidrao@users.noreply.github.com>
Co-authored-by: Lucas <61513630+lsglucas@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
  • Loading branch information
4 people committed Oct 31, 2022
1 parent 7a2e9c7 commit 330e811
Show file tree
Hide file tree
Showing 2 changed files with 139 additions and 0 deletions.
138 changes: 138 additions & 0 deletions docs/pt/docs/tutorial/path-params-numeric-validations.md
@@ -0,0 +1,138 @@
# Parùmetros da Rota e ValidaçÔes Numéricas

Do mesmo modo que vocĂȘ pode declarar mais validaçÔes e metadados para parĂąmetros de consulta com `Query`, vocĂȘ pode declarar os mesmos tipos de validaçÔes e metadados para parĂąmetros de rota com `Path`.

## Importe `Path`

Primeiro, importe `Path` de `fastapi`:

=== "Python 3.6 e superiores"

```Python hl_lines="3"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001.py!}
```

=== "Python 3.10 e superiores"

```Python hl_lines="1"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001_py310.py!}
```

## Declare metadados

VocĂȘ pode declarar todos os parĂąmetros da mesma maneira que na `Query`.

Por exemplo para declarar um valor de metadado `title` para o parĂąmetro de rota `item_id` vocĂȘ pode digitar:

=== "Python 3.6 e superiores"

```Python hl_lines="10"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001.py!}
```

=== "Python 3.10 e superiores"

```Python hl_lines="8"
{!> ../../../docs_src/path_params_numeric_validations/tutorial001_py310.py!}
```

!!! note "Nota"
Um parĂąmetro de rota Ă© sempre obrigatĂłrio, como se fizesse parte da rota.

EntĂŁo, vocĂȘ deve declarĂĄ-lo com `...` para marcĂĄ-lo como obrigatĂłrio.

Mesmo que vocĂȘ declare-o como `None` ou defina um valor padrĂŁo, isso nĂŁo teria efeito algum, o parĂąmetro ainda seria obrigatĂłrio.

## Ordene os parĂąmetros de acordo com sua necessidade

Suponha que vocĂȘ queira declarar o parĂąmetro de consulta `q` como uma `str` obrigatĂłria.

E vocĂȘ nĂŁo precisa declarar mais nada em relação a este parĂąmetro, entĂŁo vocĂȘ nĂŁo precisa necessariamente usar `Query`.

Mas vocĂȘ ainda precisa usar `Path` para o parĂąmetro de rota `item_id`.

O Python irĂĄ acusar se vocĂȘ colocar um elemento com um valor padrĂŁo definido antes de outro que nĂŁo tenha um valor padrĂŁo.

Mas vocĂȘ pode reordenĂĄ-los, colocando primeiro o elemento sem o valor padrĂŁo (o parĂąmetro de consulta `q`).

Isso não faz diferença para o **FastAPI**. Ele vai detectar os parùmetros pelos seus nomes, tipos e definiçÔes padrão (`Query`, `Path`, etc), sem se importar com a ordem.

EntĂŁo, vocĂȘ pode declarar sua função assim:

```Python hl_lines="7"
{!../../../docs_src/path_params_numeric_validations/tutorial002.py!}
```

## Ordene os parĂąmetros de a acordo com sua necessidade, truques

Se vocĂȘ quiser declarar o parĂąmetro de consulta `q` sem um `Query` nem um valor padrĂŁo, e o parĂąmetro de rota `item_id` usando `Path`, e definĂ­-los em uma ordem diferente, Python tem um pequeno truque na sintaxe para isso.

Passe `*`, como o primeiro parùmetro da função.

O Python nĂŁo vai fazer nada com esse `*`, mas ele vai saber que a partir dali os parĂąmetros seguintes deverĂŁo ser chamados argumentos nomeados (pares chave-valor), tambĂ©m conhecidos como <abbr title="Do inglĂȘs: K-ey W-ord Arg-uments"><code>kwargs</code></abbr>. Mesmo que eles nĂŁo possuam um valor padrĂŁo.

```Python hl_lines="7"
{!../../../docs_src/path_params_numeric_validations/tutorial003.py!}
```

## ValidaçÔes numéricas: maior que ou igual

Com `Query` e `Path` (e outras que vocĂȘ verĂĄ mais tarde) vocĂȘ pode declarar restriçÔes numĂ©ricas.

Aqui, com `ge=1`, `item_id` precisarĂĄ ser um nĂșmero inteiro maior que ("`g`reater than") ou igual ("`e`qual") a 1.

```Python hl_lines="8"
{!../../../docs_src/path_params_numeric_validations/tutorial004.py!}
```

## ValidaçÔes numéricas: maior que e menor que ou igual

O mesmo se aplica para:

* `gt`: maior que (`g`reater `t`han)
* `le`: menor que ou igual (`l`ess than or `e`qual)

```Python hl_lines="9"
{!../../../docs_src/path_params_numeric_validations/tutorial005.py!}
```

## ValidaçÔes numéricas: valores do tipo float, maior que e menor que

ValidaçÔes numéricas também funcionam para valores do tipo `float`.

Aqui Ă© onde se torna importante a possibilidade de declarar <abbr title="greater than"><code>gt</code></abbr> e nĂŁo apenas <abbr title="greater than or equal"><code>ge</code></abbr>. Com isso vocĂȘ pode especificar, por exemplo, que um valor deve ser maior que `0`, ainda que seja menor que `1`.

Assim, `0.5` seria um valor vĂĄlido. Mas `0.0` ou `0` nĂŁo seria.

E o mesmo para <abbr title="less than"><code>lt</code></abbr>.

```Python hl_lines="11"
{!../../../docs_src/path_params_numeric_validations/tutorial006.py!}
```

## Recapitulando

Com `Query`, `Path` (e outras que vocĂȘ ainda nĂŁo viu) vocĂȘ pode declarar metadados e validaçÔes de texto do mesmo modo que com [ParĂąmetros de consulta e validaçÔes de texto](query-params-str-validations.md){.internal-link target=_blank}.

E vocĂȘ tambĂ©m pode declarar validaçÔes numĂ©ricas:

* `gt`: maior que (`g`reater `t`han)
* `ge`: maior que ou igual (`g`reater than or `e`qual)
* `lt`: menor que (`l`ess `t`han)
* `le`: menor que ou igual (`l`ess than or `e`qual)

!!! info "Informação"
`Query`, `Path` e outras classes que vocĂȘ verĂĄ a frente sĂŁo subclasses de uma classe comum `Param`.

Todas elas compartilham os mesmos parĂąmetros para validação adicional e metadados que vocĂȘ viu.

!!! note "Detalhes TĂ©cnicos"
Quando vocĂȘ importa `Query`, `Path` e outras de `fastapi`, elas sĂŁo na verdade funçÔes.

Que quando chamadas, retornam instĂąncias de classes de mesmo nome.

EntĂŁo, vocĂȘ importa `Query`, que Ă© uma função. E quando vocĂȘ a chama, ela retorna uma instĂąncia de uma classe tambĂ©m chamada `Query`.

Estas funçÔes são assim (ao invés de apenas usar as classes diretamente) para que seu editor não acuse erros sobre seus tipos.

Dessa maneira vocĂȘ pode user seu editor e ferramentas de desenvolvimento sem precisar adicionar configuraçÔes customizadas para ignorar estes erros.
1 change: 1 addition & 0 deletions docs/pt/mkdocs.yml
Expand Up @@ -69,6 +69,7 @@ nav:
- tutorial/body-fields.md
- tutorial/extra-data-types.md
- tutorial/query-params-str-validations.md
- tutorial/path-params-numeric-validations.md
- tutorial/cookie-params.md
- tutorial/header-params.md
- tutorial/response-status-code.md
Expand Down

0 comments on commit 330e811

Please sign in to comment.