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/body-multiple-params.md #4111

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
97fa202
Translate to PT body-multiple-params.md
lbmendes Oct 29, 2021
afab46a
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Feb 9, 2022
8eac216
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Feb 9, 2022
1c8f3ae
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Feb 9, 2022
64f21da
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Feb 9, 2022
f1a3a7d
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Feb 9, 2022
275d42a
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Feb 9, 2022
f2d3006
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Feb 9, 2022
c681435
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Feb 9, 2022
dc63e15
Update body-multiple-params.md
lbmendes Feb 9, 2022
42a0efa
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
09d6c5a
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
3d2d981
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
84fbb8b
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
1c40935
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
4a42bcd
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
9765662
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
62470ee
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
93681d9
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
7b1085b
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
846c67c
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
835227e
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
e947e91
Update docs/pt/docs/tutorial/body-multiple-params.md
lbmendes Oct 12, 2022
fcd8fd4
Improving the translation: tutorial - body multiple params
lbmendes Oct 12, 2022
76756c3
Add updates from english version - tutorial body multiple params
lbmendes Oct 13, 2022
9ba8f04
Merge branch 'master' into portuguese-translation/body-multiple-params
lbmendes Oct 13, 2022
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
213 changes: 213 additions & 0 deletions docs/pt/docs/tutorial/body-multiple-params.md
@@ -0,0 +1,213 @@
# Corpo - Múltiplos parâmetros

Agora que nós vimos como usar `Path` e `Query`, veremos usos mais avançados de declarações no corpo da requisição.

## Misture `Path`, `Query` e parâmetros de corpo

Primeiro, é claro, você pode misturar `Path`, `Query` e declarações de parâmetro no corpo da requisição livremente e o **FastAPI** saberá o que fazer.

E você também pode declarar parâmetros de corpo como opcionais, definindo o valor padrão com `None`:

=== "Python 3.6 e superiores"

```Python hl_lines="19-21"
{!> ../../../docs_src/body_multiple_params/tutorial001.py!}
```

=== "Python 3.10 e superiores"

```Python hl_lines="17-19"
{!> ../../../docs_src/body_multiple_params/tutorial001_py310.py!}
```

!!! 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

No exemplo anterior, as *operações de rota* esperariam um JSON no corpo contendo os atributos de um `Item`, exemplo:

```JSON
{
"name": "Foo",
"description": "The pretender",
"price": 42.0,
"tax": 3.2
}
```

Mas você pode também declarar múltiplos parâmetros de corpo, por exemplo, `item` e `user`:

=== "Python 3.6 e superiores"

```Python hl_lines="22"
{!> ../../../docs_src/body_multiple_params/tutorial002.py!}
```

=== "Python 3.10 e superiores"

```Python hl_lines="20"
{!> ../../../docs_src/body_multiple_params/tutorial002_py310.py!}
```

Neste caso, o **FastAPI** perceberá que existe mais de um parâmetro de corpo na função (dois parâmetros que são modelos Pydantic).

Então, ele usará o nome dos parâmetros como chaves (nome dos campos) no corpo, e espera um corpo como:

```JSON
{
"item": {
"name": "Foo",
"description": "The pretender",
"price": 42.0,
"tax": 3.2
},
"user": {
"username": "dave",
"full_name": "Dave Grohl"
}
}
```

!!! 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`.


O **FastAPI** fará a conversão automática a partir da requisição, assim esse parâmetro `item` receberá seu respectivo conteúdo e o mesmo ocorrerá com `user`.

Ele executará a validação dos dados compostos e irá documentá-los de maneira compatível com o esquema OpenAPI e documentação automática.

## Valores singulares no corpo

Assim como existem uma `Query` e uma `Path` para definir dados adicionais para parâmetros de consulta e de rota, o **FastAPI** provê o equivalente para `Body`.

Por exemplo, extendendo o modelo anterior, você poder decidir por ter uma outra chave `importance` no mesmo corpo, além de `item` e `user`.

Se você declará-lo como é, porque é um valor singular, o **FastAPI** assumirá que se trata de um parâmetro de consulta.

Mas você pode instruir o **FastAPI** para tratá-lo como outra chave do corpo usando `Body`:

=== "Python 3.6 e superiores"

```Python hl_lines="22"
{!> ../../../docs_src/body_multiple_params/tutorial003.py!}
```

=== "Python 3.10 e superiores"

```Python hl_lines="20"
{!> ../../../docs_src/body_multiple_params/tutorial003_py310.py!}
```

Neste caso, o **FastAPI** esperará um corpo como:

```JSON
{
"item": {
"name": "Foo",
"description": "The pretender",
"price": 42.0,
"tax": 3.2
},
"user": {
"username": "dave",
"full_name": "Dave Grohl"
},
"importance": 5
}
```

Mais uma vez, ele converterá os tipos de dados, validar, documentar, etc.

## Múltiplos parâmetros de corpo e consulta

Obviamente, você também pode declarar parâmetros de consulta assim que você precisar, de modo adicional a quaisquer parâmetros de corpo.

Dado que, por padrão, valores singulares são interpretados como parâmetros de consulta, você não precisa explicitamente adicionar uma `Query`, você pode somente:

```Python
q: Union[str, None] = None
```

Ou como em Python 3.10 e versões superiores:

```Python
q: str | None = None
```

Por exemplo:

=== "Python 3.6 e superiores"

```Python hl_lines="27"
{!> ../../../docs_src/body_multiple_params/tutorial004.py!}
```

=== "Python 3.10 e superiores"

```Python hl_lines="26"
{!> ../../../docs_src/body_multiple_params/tutorial004_py310.py!}
```

!!! info "Informação"
`Body` também possui todas as validações adicionais e metadados de parâmetros como em `Query`,`Path` e outras que você verá depois.

## Declare um único parâmetro de corpo indicando sua chave

Suponha que você tem um único parâmetro de corpo `item`, a partir de um modelo Pydantic `Item`.

Por padrão, o **FastAPI** esperará que seu conteúdo venha no corpo diretamente.

Mas se você quiser que ele espere por um JSON com uma chave `item` e dentro dele os conteúdos do modelo, como ocorre ao declarar vários parâmetros de corpo, você pode usar o parâmetro especial de `Body` chamado `embed`:

```Python
item: Item = Body(embed=True)
```

como em:

=== "Python 3.6 e superiores"

```Python hl_lines="17"
{!> ../../../docs_src/body_multiple_params/tutorial005.py!}
```

=== "Python 3.10 e superiores"

```Python hl_lines="15"
{!> ../../../docs_src/body_multiple_params/tutorial005_py310.py!}
```

Neste caso o **FastAPI** esperará um corpo como:

```JSON hl_lines="2"
{
"item": {
"name": "Foo",
"description": "The pretender",
"price": 42.0,
"tax": 3.2
}
}
```

ao invés de:

```JSON
{
"name": "Foo",
"description": "The pretender",
"price": 42.0,
"tax": 3.2
}
```

## Recapitulando

Você pode adicionar múltiplos parâmetros de corpo para sua *função de operação de rota*, mesmo que a requisição possa ter somente um único corpo.

E o **FastAPI** vai manipulá-los, mandar para você os dados corretos na sua função, e validar e documentar o schema correto na *operação de rota*.
lbmendes marked this conversation as resolved.
Show resolved Hide resolved

Você também pode declarar valores singulares para serem recebidos como parte do corpo.

E você pode instruir o **FastAPI** para requisitar no corpo a indicação de chave mesmo quando existe somente um único parâmetro declarado.
1 change: 1 addition & 0 deletions docs/pt/mkdocs.yml
Expand Up @@ -66,6 +66,7 @@ nav:
- tutorial/path-params.md
- tutorial/query-params.md
- tutorial/body.md
- tutorial/body-multiple-params.md
- tutorial/body-fields.md
- tutorial/extra-data-types.md
- tutorial/query-params-str-validations.md
Expand Down