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’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🌐 Add Portuguese translation for docs/pt/docs/tutorial/path-params-numeric-validations.md #4099

Merged
Show file tree
Hide file tree
Changes from 6 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
122 changes: 122 additions & 0 deletions docs/pt/docs/tutorial/path-params-numeric-validations.md
@@ -0,0 +1,122 @@
# 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 hl_lines="3"
{!../../../docs_src/path_params_numeric_validations/tutorial001.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 hl_lines="10"
{!../../../docs_src/path_params_numeric_validations/tutorial001.py!}
```

!!! nota
lbmendes marked this conversation as resolved.
Show resolved Hide resolved
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 a acordo com sua necessidade
lbmendes marked this conversation as resolved.
Show resolved Hide resolved

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="8"
{!../../../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="8"
{!../../../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 de string, e tambĂ©m 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 que vocĂȘ verĂĄ a frente sĂŁo subclasses de uma classe `Param` comum (que vocĂȘ nĂŁo precisa usar).

E todas elas compartilham todos esses mesmos parĂąmetros de 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 @@ -61,6 +61,7 @@ nav:
- tutorial/index.md
- tutorial/first-steps.md
- tutorial/path-params.md
- tutorial/path-params-numeric-validations.md
- tutorial/body-fields.md
- Segurança:
- tutorial/security/index.md
Expand Down