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 24 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
170 changes: 170 additions & 0 deletions docs/pt/docs/tutorial/body-multiple-params.md
@@ -0,0 +1,170 @@
# 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 hl_lines="19-21"
{!../../../docs_src/body_multiple_params/tutorial001.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 hl_lines="22"
{!../../../docs_src/body_multiple_params/tutorial002.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 hl_lines="23"
{!../../../docs_src/body_multiple_params/tutorial003.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: Optional[str] = None
```

como em:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
como em:
Ou no Python 3.10 e acima:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The english content was updated with some addictions like mentions to python 3.10. I will review and update this PR with the updated version.

Copy link
Contributor Author

@lbmendes lbmendes Oct 13, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's finished. I updated the translation with the actual content from english version.


```Python hl_lines="28"
{!../../../docs_src/body_multiple_params/tutorial004.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 hl_lines="17"
{!../../../docs_src/body_multiple_params/tutorial005.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 @@ -61,6 +61,7 @@ nav:
- tutorial/index.md
- tutorial/first-steps.md
- tutorial/path-params.md
- tutorial/body-multiple-params.md
- tutorial/body-fields.md
- Segurança:
- tutorial/security/index.md
Expand Down