From: ilacftemp <159066669+ilacftemp@users.noreply.github.com>
Date: Thu, 24 Oct 2024 18:52:36 +0000 (-0300)
Subject: 🌐 Add Portuguese translation for `docs/pt/docs/how-to/separate-openapi-schemas.md...
X-Git-Tag: 0.115.4~66
X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=55bcab6d75b2b1f1780f56f989fbfba1498b96d0;p=thirdparty%2Ffastapi%2Ffastapi.git
🌐 Add Portuguese translation for `docs/pt/docs/how-to/separate-openapi-schemas.md` (#12518)
---
diff --git a/docs/pt/docs/how-to/separate-openapi-schemas.md b/docs/pt/docs/how-to/separate-openapi-schemas.md
new file mode 100644
index 0000000000..50d321d4ca
--- /dev/null
+++ b/docs/pt/docs/how-to/separate-openapi-schemas.md
@@ -0,0 +1,258 @@
+# Esquemas OpenAPI Separados para Entrada e SaÃda ou Não
+
+Ao usar **Pydantic v2**, o OpenAPI gerado é um pouco mais exato e **correto** do que antes. ð
+
+Inclusive, em alguns casos, ele terá até **dois JSON Schemas** no OpenAPI para o mesmo modelo Pydantic, para entrada e saÃda, dependendo se eles possuem **valores padrão**.
+
+Vamos ver como isso funciona e como alterar se for necessário.
+
+## Modelos Pydantic para Entrada e SaÃda
+
+Digamos que você tenha um modelo Pydantic com valores padrão, como este:
+
+//// tab | Python 3.10+
+
+```Python hl_lines="7"
+{!> ../../docs_src/separate_openapi_schemas/tutorial001_py310.py[ln:1-7]!}
+
+# Code below omitted ð
+```
+
+
+ð Visualização completa do arquivo
+
+```Python
+{!> ../../docs_src/separate_openapi_schemas/tutorial001_py310.py!}
+```
+
+
+
+////
+
+//// tab | Python 3.9+
+
+```Python hl_lines="9"
+{!> ../../docs_src/separate_openapi_schemas/tutorial001_py39.py[ln:1-9]!}
+
+# Code below omitted ð
+```
+
+
+ð Visualização completa do arquivo
+
+```Python
+{!> ../../docs_src/separate_openapi_schemas/tutorial001_py39.py!}
+```
+
+
+
+////
+
+//// tab | Python 3.8+
+
+```Python hl_lines="9"
+{!> ../../docs_src/separate_openapi_schemas/tutorial001.py[ln:1-9]!}
+
+# Code below omitted ð
+```
+
+
+ð Visualização completa do arquivo
+
+```Python
+{!> ../../docs_src/separate_openapi_schemas/tutorial001.py!}
+```
+
+
+
+////
+
+### Modelo para Entrada
+
+Se você usar esse modelo como entrada, como aqui:
+
+//// tab | Python 3.10+
+
+```Python hl_lines="14"
+{!> ../../docs_src/separate_openapi_schemas/tutorial001_py310.py[ln:1-15]!}
+
+# Code below omitted ð
+```
+
+
+ð Visualização completa do arquivo
+
+```Python
+{!> ../../docs_src/separate_openapi_schemas/tutorial001_py310.py!}
+```
+
+
+
+////
+
+//// tab | Python 3.9+
+
+```Python hl_lines="16"
+{!> ../../docs_src/separate_openapi_schemas/tutorial001_py39.py[ln:1-17]!}
+
+# Code below omitted ð
+```
+
+
+ð Visualização completa do arquivo
+
+```Python
+{!> ../../docs_src/separate_openapi_schemas/tutorial001_py39.py!}
+```
+
+
+
+////
+
+//// tab | Python 3.8+
+
+```Python hl_lines="16"
+{!> ../../docs_src/separate_openapi_schemas/tutorial001.py[ln:1-17]!}
+
+# Code below omitted ð
+```
+
+
+ð Visualização completa do arquivo
+
+```Python
+{!> ../../docs_src/separate_openapi_schemas/tutorial001.py!}
+```
+
+
+
+////
+
+... então o campo `description` não será obrigatório. Porque ele tem um valor padrão de `None`.
+
+### Modelo de Entrada na Documentação
+
+Você pode confirmar que na documentação, o campo `description` não tem um **asterisco vermelho**, não é marcado como obrigatório:
+
+
+

+
+
+### Modelo para SaÃda
+
+Mas se você usar o mesmo modelo como saÃda, como aqui:
+
+//// tab | Python 3.10+
+
+```Python hl_lines="19"
+{!> ../../docs_src/separate_openapi_schemas/tutorial001_py310.py!}
+```
+
+////
+
+//// tab | Python 3.9+
+
+```Python hl_lines="21"
+{!> ../../docs_src/separate_openapi_schemas/tutorial001_py39.py!}
+```
+
+////
+
+//// tab | Python 3.8+
+
+```Python hl_lines="21"
+{!> ../../docs_src/separate_openapi_schemas/tutorial001.py!}
+```
+
+////
+
+... então, como `description` tem um valor padrão, se você **não retornar nada** para esse campo, ele ainda terá o **valor padrão**.
+
+### Modelo para Dados de Resposta de SaÃda
+
+Se você interagir com a documentação e verificar a resposta, mesmo que o código não tenha adicionado nada em um dos campos `description`, a resposta JSON contém o valor padrão (`null`):
+
+
+

+
+
+Isso significa que ele **sempre terá um valor**, só que às vezes o valor pode ser `None` (ou `null` em termos de JSON).
+
+Isso quer dizer que, os clientes que usam sua API não precisam verificar se o valor existe ou não, eles podem **assumir que o campo sempre estará lá**, mas que em alguns casos terá o valor padrão de `None`.
+
+A maneira de descrever isso no OpenAPI é marcar esse campo como **obrigatório**, porque ele sempre estará lá.
+
+Por causa disso, o JSON Schema para um modelo pode ser diferente dependendo se ele é usado para **entrada ou saÃda**:
+
+* para **entrada**, o `description` **não será obrigatório**
+* para **saÃda**, ele será **obrigatório** (e possivelmente `None`, ou em termos de JSON, `null`)
+
+### Modelo para SaÃda na Documentação
+
+Você pode verificar o modelo de saÃda na documentação também, ambos `name` e `description` são marcados como **obrigatórios** com um **asterisco vermelho**:
+
+
+

+
+
+### Modelo para Entrada e SaÃda na Documentação
+
+E se você verificar todos os Schemas disponÃveis (JSON Schemas) no OpenAPI, verá que há dois, um `Item-Input` e um `Item-Output`.
+
+Para `Item-Input`, `description` **não é obrigatório**, não tem um asterisco vermelho.
+
+Mas para `Item-Output`, `description` **é obrigatório**, tem um asterisco vermelho.
+
+
+

+
+
+Com esse recurso do **Pydantic v2**, sua documentação da API fica mais **precisa**, e se você tiver clientes e SDKs gerados automaticamente, eles serão mais precisos também, proporcionando uma melhor **experiência para desenvolvedores** e consistência. ð
+
+## Não Separe Schemas
+
+Agora, há alguns casos em que você pode querer ter o **mesmo esquema para entrada e saÃda**.
+
+Provavelmente, o principal caso de uso para isso é se você já tem algum código de cliente/SDK gerado automaticamente e não quer atualizar todo o código de cliente/SDK gerado ainda, você provavelmente vai querer fazer isso em algum momento, mas talvez não agora.
+
+Nesse caso, você pode desativar esse recurso no **FastAPI**, com o parâmetro `separate_input_output_schemas=False`.
+
+/// info | Informação
+
+O suporte para `separate_input_output_schemas` foi adicionado no FastAPI `0.102.0`. ð¤
+
+///
+
+//// tab | Python 3.10+
+
+```Python hl_lines="10"
+{!> ../../docs_src/separate_openapi_schemas/tutorial002_py310.py!}
+```
+
+////
+
+//// tab | Python 3.9+
+
+```Python hl_lines="12"
+{!> ../../docs_src/separate_openapi_schemas/tutorial002_py39.py!}
+```
+
+////
+
+//// tab | Python 3.8+
+
+```Python hl_lines="12"
+{!> ../../docs_src/separate_openapi_schemas/tutorial002.py!}
+```
+
+////
+
+### Mesmo Esquema para Modelos de Entrada e SaÃda na Documentação
+
+E agora haverá um único esquema para entrada e saÃda para o modelo, apenas `Item`, e `description` **não será obrigatório**:
+
+
+

+
+
+Esse é o mesmo comportamento do Pydantic v1. ð¤