Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd68d9c4

Browse files
authored
Merge branch 'master' into master
2 parents6812847 +a498582 commitd68d9c4

File tree

7 files changed

+284
-16
lines changed

7 files changed

+284
-16
lines changed

‎docs/en/data/external_links.yml‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,10 @@ Articles:
339339
link:https://qiita.com/mtitg/items/47770e9a562dd150631d
340340
title:FastAPI|DB接続してCRUDするPython製APIサーバーを構築
341341
Portuguese:
342+
-author:Eduardo Mendes
343+
author_link:https://bolha.us/@dunossauro
344+
link:https://fastapidozero.dunossauro.com/
345+
title:FastAPI do ZERO
342346
-author:Jessica Temporal
343347
author_link:https://jtemporal.com/socials
344348
link:https://jtemporal.com/dicas-para-migrar-de-flask-para-fastapi-e-vice-versa/

‎docs/en/docs/release-notes.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,17 @@ hide:
99

1010
###Docs
1111

12+
* 📝 Add External Link: FastAPI do Zero. PR[#12533](https://github.com/fastapi/fastapi/pull/12533) by[@rennerocha](https://github.com/rennerocha).
1213
* 📝 Fix minor typos. PR[#12516](https://github.com/fastapi/fastapi/pull/12516) by[@kkirsche](https://github.com/kkirsche).
1314
* 🌐 Fix rendering issue in translations. PR[#12509](https://github.com/fastapi/fastapi/pull/12509) by[@alejsdev](https://github.com/alejsdev).
1415

1516
###Translations
1617

18+
* 🌐 Add Portuguese translation for`docs/pt/docs/how-to/separate-openapi-schemas.md`. PR[#12518](https://github.com/fastapi/fastapi/pull/12518) by[@ilacftemp](https://github.com/ilacftemp).
19+
* 🌐 Update Traditional Chinese translation for`docs/zh-hant/docs/deployment/index.md`. PR[#12521](https://github.com/fastapi/fastapi/pull/12521) by[@codingjenny](https://github.com/codingjenny).
20+
* 🌐 Update Traditional Chinese translation for`docs/zh-hant/docs/deployment/cloud.md`. PR[#12522](https://github.com/fastapi/fastapi/pull/12522) by[@codingjenny](https://github.com/codingjenny).
21+
* 🌐 Update Traditional Chinese translation for`docs/zh-hant/docs/how-to/index.md`. PR[#12523](https://github.com/fastapi/fastapi/pull/12523) by[@codingjenny](https://github.com/codingjenny).
22+
* 🌐 Update Traditional Chinese translation for`docs/zh-hant/docs/tutorial/index.md`. PR[#12524](https://github.com/fastapi/fastapi/pull/12524) by[@codingjenny](https://github.com/codingjenny).
1723
* 🌐 Add Traditional Chinese translation for`docs/zh-hant/docs/how-to/index.md`. PR[#12468](https://github.com/fastapi/fastapi/pull/12468) by[@codingjenny](https://github.com/codingjenny).
1824
* 🌐 Add Traditional Chinese translation for`docs/zh-hant/docs/tutorial/index.md`. PR[#12466](https://github.com/fastapi/fastapi/pull/12466) by[@codingjenny](https://github.com/codingjenny).
1925
* 🌐 Add Portuguese translation for`docs/pt/docs/tutorial/header-param-models.md`. PR[#12437](https://github.com/fastapi/fastapi/pull/12437) by[@Joao-Pedro-P-Holanda](https://github.com/Joao-Pedro-P-Holanda).
Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
#Esquemas OpenAPI Separados para Entrada e Saída ou Não
2+
3+
Ao usar**Pydantic v2**, o OpenAPI gerado é um pouco mais exato e**correto** do que antes. 😎
4+
5+
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**.
6+
7+
Vamos ver como isso funciona e como alterar se for necessário.
8+
9+
##Modelos Pydantic para Entrada e Saída
10+
11+
Digamos que você tenha um modelo Pydantic com valores padrão, como este:
12+
13+
//// tab | Python 3.10+
14+
15+
```Python hl_lines="7"
16+
{!> ../../docs_src/separate_openapi_schemas/tutorial001_py310.py[ln:1-7]!}
17+
18+
# Code below omitted 👇
19+
```
20+
21+
<details>
22+
<summary>👀 Visualização completa do arquivo</summary>
23+
24+
```Python
25+
{!> ../../docs_src/separate_openapi_schemas/tutorial001_py310.py!}
26+
```
27+
28+
</details>
29+
30+
////
31+
32+
//// tab | Python 3.9+
33+
34+
```Python hl_lines="9"
35+
{!> ../../docs_src/separate_openapi_schemas/tutorial001_py39.py[ln:1-9]!}
36+
37+
# Code below omitted 👇
38+
```
39+
40+
<details>
41+
<summary>👀 Visualização completa do arquivo</summary>
42+
43+
```Python
44+
{!> ../../docs_src/separate_openapi_schemas/tutorial001_py39.py!}
45+
```
46+
47+
</details>
48+
49+
////
50+
51+
//// tab | Python 3.8+
52+
53+
```Python hl_lines="9"
54+
{!> ../../docs_src/separate_openapi_schemas/tutorial001.py[ln:1-9]!}
55+
56+
# Code below omitted 👇
57+
```
58+
59+
<details>
60+
<summary>👀 Visualização completa do arquivo</summary>
61+
62+
```Python
63+
{!> ../../docs_src/separate_openapi_schemas/tutorial001.py!}
64+
```
65+
66+
</details>
67+
68+
////
69+
70+
###Modelo para Entrada
71+
72+
Se você usar esse modelo como entrada, como aqui:
73+
74+
//// tab | Python 3.10+
75+
76+
```Python hl_lines="14"
77+
{!> ../../docs_src/separate_openapi_schemas/tutorial001_py310.py[ln:1-15]!}
78+
79+
# Code below omitted 👇
80+
```
81+
82+
<details>
83+
<summary>👀 Visualização completa do arquivo</summary>
84+
85+
```Python
86+
{!> ../../docs_src/separate_openapi_schemas/tutorial001_py310.py!}
87+
```
88+
89+
</details>
90+
91+
////
92+
93+
//// tab | Python 3.9+
94+
95+
```Python hl_lines="16"
96+
{!> ../../docs_src/separate_openapi_schemas/tutorial001_py39.py[ln:1-17]!}
97+
98+
# Code below omitted 👇
99+
```
100+
101+
<details>
102+
<summary>👀 Visualização completa do arquivo</summary>
103+
104+
```Python
105+
{!> ../../docs_src/separate_openapi_schemas/tutorial001_py39.py!}
106+
```
107+
108+
</details>
109+
110+
////
111+
112+
//// tab | Python 3.8+
113+
114+
```Python hl_lines="16"
115+
{!> ../../docs_src/separate_openapi_schemas/tutorial001.py[ln:1-17]!}
116+
117+
# Code below omitted 👇
118+
```
119+
120+
<details>
121+
<summary>👀 Visualização completa do arquivo</summary>
122+
123+
```Python
124+
{!> ../../docs_src/separate_openapi_schemas/tutorial001.py!}
125+
```
126+
127+
</details>
128+
129+
////
130+
131+
... então o campo`description` não será obrigatório. Porque ele tem um valor padrão de`None`.
132+
133+
###Modelo de Entrada na Documentação
134+
135+
Você pode confirmar que na documentação, o campo`description` não tem um**asterisco vermelho**, não é marcado como obrigatório:
136+
137+
<divclass="screenshot">
138+
<imgsrc="/img/tutorial/separate-openapi-schemas/image01.png">
139+
</div>
140+
141+
###Modelo para Saída
142+
143+
Mas se você usar o mesmo modelo como saída, como aqui:
144+
145+
//// tab | Python 3.10+
146+
147+
```Python hl_lines="19"
148+
{!> ../../docs_src/separate_openapi_schemas/tutorial001_py310.py!}
149+
```
150+
151+
////
152+
153+
//// tab | Python 3.9+
154+
155+
```Python hl_lines="21"
156+
{!> ../../docs_src/separate_openapi_schemas/tutorial001_py39.py!}
157+
```
158+
159+
////
160+
161+
//// tab | Python 3.8+
162+
163+
```Python hl_lines="21"
164+
{!> ../../docs_src/separate_openapi_schemas/tutorial001.py!}
165+
```
166+
167+
////
168+
169+
... 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**.
170+
171+
###Modelo para Dados de Resposta de Saída
172+
173+
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`):
174+
175+
<divclass="screenshot">
176+
<imgsrc="/img/tutorial/separate-openapi-schemas/image02.png">
177+
</div>
178+
179+
Isso significa que ele**sempre terá um valor**, só que às vezes o valor pode ser`None` (ou`null` em termos de JSON).
180+
181+
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`.
182+
183+
A maneira de descrever isso no OpenAPI é marcar esse campo como**obrigatório**, porque ele sempre estará lá.
184+
185+
Por causa disso, o JSON Schema para um modelo pode ser diferente dependendo se ele é usado para**entrada ou saída**:
186+
187+
* para**entrada**, o`description`**não será obrigatório**
188+
* para**saída**, ele será**obrigatório** (e possivelmente`None`, ou em termos de JSON,`null`)
189+
190+
###Modelo para Saída na Documentação
191+
192+
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**:
193+
194+
<divclass="screenshot">
195+
<imgsrc="/img/tutorial/separate-openapi-schemas/image03.png">
196+
</div>
197+
198+
###Modelo para Entrada e Saída na Documentação
199+
200+
E se você verificar todos os Schemas disponíveis (JSON Schemas) no OpenAPI, verá que há dois, um`Item-Input` e um`Item-Output`.
201+
202+
Para`Item-Input`,`description`**não é obrigatório**, não tem um asterisco vermelho.
203+
204+
Mas para`Item-Output`,`description`**é obrigatório**, tem um asterisco vermelho.
205+
206+
<divclass="screenshot">
207+
<imgsrc="/img/tutorial/separate-openapi-schemas/image04.png">
208+
</div>
209+
210+
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. 🎉
211+
212+
##Não Separe Schemas
213+
214+
Agora, há alguns casos em que você pode querer ter o**mesmo esquema para entrada e saída**.
215+
216+
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.
217+
218+
Nesse caso, você pode desativar esse recurso no**FastAPI**, com o parâmetro`separate_input_output_schemas=False`.
219+
220+
/// info | Informação
221+
222+
O suporte para`separate_input_output_schemas` foi adicionado no FastAPI`0.102.0`. 🤓
223+
224+
///
225+
226+
//// tab | Python 3.10+
227+
228+
```Python hl_lines="10"
229+
{!> ../../docs_src/separate_openapi_schemas/tutorial002_py310.py!}
230+
```
231+
232+
////
233+
234+
//// tab | Python 3.9+
235+
236+
```Python hl_lines="12"
237+
{!> ../../docs_src/separate_openapi_schemas/tutorial002_py39.py!}
238+
```
239+
240+
////
241+
242+
//// tab | Python 3.8+
243+
244+
```Python hl_lines="12"
245+
{!> ../../docs_src/separate_openapi_schemas/tutorial002.py!}
246+
```
247+
248+
////
249+
250+
###Mesmo Esquema para Modelos de Entrada e Saída na Documentação
251+
252+
E agora haverá um único esquema para entrada e saída para o modelo, apenas`Item`, e`description`**não será obrigatório**:
253+
254+
<divclass="screenshot">
255+
<imgsrc="/img/tutorial/separate-openapi-schemas/image05.png">
256+
</div>
257+
258+
Esse é o mesmo comportamento do Pydantic v1. 🤓

‎docs/zh-hant/docs/deployment/cloud.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
#在雲端部署 FastAPI
22

3-
你幾乎可以使用**任何雲端供應商**來部署你的 FastAPI 應用程式。
3+
你幾乎可以使用**任何雲端供應商**來部署你的 FastAPI 應用程式。
44

55
在大多數情況下,主要的雲端供應商都有部署 FastAPI 的指南。
66

77
##雲端供應商 - 贊助商
88

9-
一些雲端供應商 ✨[**贊助 FastAPI**](../help-fastapi.md#sponsor-the-author){.internal-link target=_blank} ✨,這確保了 FastAPI 及其**生態系統**持續健康地**發展**
9+
一些雲端供應商 ✨[**贊助 FastAPI**](../help-fastapi.md#sponsor-the-author){.internal-link target=_blank} ✨,這確保了 FastAPI 及其**生態系統**持續健康地**發展**
1010

11-
這也展現了他們對 FastAPI 和其**社群**(包括你)的真正承諾,他們不僅希望為你提供**優質的服務**,還希望確保你擁有一個**良好且健康的框架**:FastAPI。🙇
11+
這也展現了他們對 FastAPI 和其**社群**(包括你)的真正承諾,他們不僅希望為你提供**優質的服務**,還希望確保你擁有一個**良好且健康的框架**:FastAPI。🙇
1212

1313
你可能會想嘗試他們的服務,以下有他們的指南:
1414

‎docs/zh-hant/docs/deployment/index.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44

55
##部署是什麼意思
66

7-
**部署**應用程式指的是執行一系列必要的步驟,使其能夠**讓使用者存取和使用**
7+
**部署**應用程式指的是執行一系列必要的步驟,使其能夠**讓使用者存取和使用**
88

9-
對於一個**Web API**,部署通常涉及將其放置在**遠端伺服器**上,並使用性能優良且穩定的**伺服器程式**,確保使用者能夠高效、無中斷地存取應用程式,且不會遇到問題。
9+
對於一個**Web API**,部署通常涉及將其放置在**遠端伺服器**上,並使用性能優良且穩定的**伺服器程式**,確保使用者能夠高效、無中斷地存取應用程式,且不會遇到問題。
1010

11-
這與**開發**階段形成鮮明對比,在**開發**階段,你會不斷更改程式碼、破壞程式碼、修復程式碼,然後停止和重新啟動伺服器等。
11+
這與**開發**階段形成鮮明對比,在**開發**階段,你會不斷更改程式碼、破壞程式碼、修復程式碼,然後停止和重新啟動伺服器等。
1212

1313
##部署策略
1414

1515
根據你的使用場景和使用工具,有多種方法可以實現此目的。
1616

17-
你可以使用一些工具自行**部署伺服器**,你也可以使用能為你完成部分工作的**雲端服務**,或其他可能的選項。
17+
你可以使用一些工具自行**部署伺服器**,你也可以使用能為你完成部分工作的**雲端服務**,或其他可能的選項。
1818

1919
我將向你展示在部署**FastAPI** 應用程式時你可能應該記住的一些主要概念(儘管其中大部分適用於任何其他類型的 Web 應用程式)。
2020

‎docs/zh-hant/docs/how-to/index.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
#使用指南 - 範例集
22

3-
在這裡,你將會看到**不同主題**的範例或「如何使用」的指南。
3+
在這裡,你將會看到**不同主題**的範例或「如何使用」的指南。
44

5-
大多數這些想法都是**獨立**的,在大多數情況下,你只需要研究那些直接適用於**你的專案**的東西。
5+
大多數這些想法都是**獨立**的,在大多數情況下,你只需要研究那些直接適用於**你的專案**的東西。
66

77
如果有些東西看起來很有趣且對你的專案很有用的話再去讀它,否則你可能可以跳過它們。
88

99
/// tip
1010

11-
如果你想要以結構化的方式**學習 FastAPI**(推薦),請前往[教學 - 使用者指南](../tutorial/index.md){.internal-link target=_blank}逐章閱讀。
11+
如果你想要以結構化的方式**學習 FastAPI**(推薦),請前往[教學 - 使用者指南](../tutorial/index.md){.internal-link target=_blank}逐章閱讀。
1212

1313
///

‎docs/zh-hant/docs/tutorial/index.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ $ <font color="#4E9A06">fastapi</font> dev <u style="text-decoration-style:singl
6161

6262
</div>
6363

64-
**強烈建議**你編寫或複製程式碼、進行修改並在本地端運行。
64+
**強烈建議**你編寫或複製程式碼、進行修改並在本地端運行。
6565

6666
在編輯器中使用它,才能真正體會到 FastAPI 的好處,可以看到你只需編寫少量程式碼,以及所有的型別檢查、自動補齊等功能。
6767

@@ -71,7 +71,7 @@ $ <font color="#4E9A06">fastapi</font> dev <u style="text-decoration-style:singl
7171

7272
第一步是安裝 FastAPI。
7373

74-
確保你建立一個[虛擬環境](../virtual-environments.md){.internal-link target=_blank},啟用它,然後**安裝 FastAPI**
74+
確保你建立一個[虛擬環境](../virtual-environments.md){.internal-link target=_blank},啟用它,然後**安裝 FastAPI**
7575

7676
<divclass="termy">
7777

@@ -93,10 +93,10 @@ $ pip install "fastapi[standard]"
9393

9494
##進階使用者指南
9595

96-
還有一個**進階使用者指南**你可以稍後閱讀。
96+
還有一個**進階使用者指南**你可以稍後閱讀。
9797

98-
**進階使用者指南**建立在這個教學之上,使用相同的概念,並教你一些額外的功能。
98+
**進階使用者指南**建立在這個教學之上,使用相同的概念,並教你一些額外的功能。
9999

100-
但首先你應該閱讀**教學 - 使用者指南**(你正在閱讀的內容)。
100+
但首先你應該閱讀**教學 - 使用者指南**(你正在閱讀的內容)。
101101

102-
它被設計成你可以使用**教學 - 使用者指南**來建立一個完整的應用程式,然後根據你的需求,使用一些額外的想法來擴展它。
102+
它被設計成你可以使用**教學 - 使用者指南**來建立一個完整的應用程式,然後根據你的需求,使用一些額外的想法來擴展它。

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2026 Movatter.jp