Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2a7f91a

Browse files
kwang1215s-rigaud
authored andcommitted
🌐 Add Korean translation for docs/ko/docs/tutorial/metadata.md (fastapi#12541)
1 parent d797de7 commit 2a7f91a

1 file changed

Lines changed: 131 additions & 0 deletions

File tree

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
2+
# 메타데이터 및 λ¬Έμ„œν™” URL
3+
4+
**FastAPI** μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ λ‹€μ–‘ν•œ 메타데이터 ꡬ성을 μ‚¬μš©μž 맞좀 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
5+
6+
## API에 λŒ€ν•œ 메타데이터
7+
8+
OpenAPI λͺ…μ„Έ 및 μžλ™ν™”λœ API λ¬Έμ„œ UI에 μ‚¬μš©λ˜λŠ” λ‹€μŒ ν•„λ“œλ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€:
9+
10+
| λ§€κ°œλ³€μˆ˜ | νƒ€μž… | μ„€λͺ… |
11+
|----------|------|-------|
12+
| `title` | `str` | API의 제λͺ©μž…λ‹ˆλ‹€. |
13+
| `summary` | `str` | API에 λŒ€ν•œ 짧은 μš”μ•½μž…λ‹ˆλ‹€. <small>OpenAPI 3.1.0, FastAPI 0.99.0λΆ€ν„° μ‚¬μš© κ°€λŠ₯</small> |
14+
| `description` | `str` | API에 λŒ€ν•œ 짧은 μ„€λͺ…μž…λ‹ˆλ‹€. λ§ˆν¬λ‹€μš΄μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. |
15+
| `version` | `string` | API의 λ²„μ „μž…λ‹ˆλ‹€. OpenAPI의 버전이 μ•„λ‹Œ, μ—¬λŸ¬λΆ„μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 버전을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 예: `2.5.0` |
16+
| `terms_of_service` | `str` | API 이용 μ•½κ΄€μ˜ URLμž…λ‹ˆλ‹€. μ œκ³΅ν•˜λŠ” 경우 URL ν˜•μ‹μ΄μ–΄μ•Ό ν•©λ‹ˆλ‹€. |
17+
| `contact` | `dict` | λ…ΈμΆœλœ API에 λŒ€ν•œ μ—°λ½μ²˜ μ •λ³΄μž…λ‹ˆλ‹€. μ—¬λŸ¬ ν•„λ“œλ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€. <details><summary><code>contact</code> ν•„λ“œ</summary><table><thead><tr><th>λ§€κ°œλ³€μˆ˜</th><th>νƒ€μž…</th><th>μ„€λͺ…</th></tr></thead><tbody><tr><td><code>name</code></td><td><code>str</code></td><td>μ—°λ½μ²˜ 인물/쑰직의 식별λͺ…μž…λ‹ˆλ‹€.</td></tr><tr><td><code>url</code></td><td><code>str</code></td><td>μ—°λ½μ²˜ 정보가 λ‹΄κΈ΄ URLμž…λ‹ˆλ‹€. URL ν˜•μ‹μ΄μ–΄μ•Ό ν•©λ‹ˆλ‹€.</td></tr><tr><td><code>email</code></td><td><code>str</code></td><td>μ—°λ½μ²˜ 인물/쑰직의 이메일 μ£Όμ†Œμž…λ‹ˆλ‹€. 이메일 μ£Όμ†Œ ν˜•μ‹μ΄μ–΄μ•Ό ν•©λ‹ˆλ‹€.</td></tr></tbody></table></details> |
18+
| `license_info` | `dict` | λ…ΈμΆœλœ API의 λΌμ΄μ„ μŠ€ μ •λ³΄μž…λ‹ˆλ‹€. μ—¬λŸ¬ ν•„λ“œλ₯Ό 포함할 수 μžˆμŠ΅λ‹ˆλ‹€. <details><summary><code>license_info</code> ν•„λ“œ</summary><table><thead><tr><th>λ§€κ°œλ³€μˆ˜</th><th>νƒ€μž…</th><th>μ„€λͺ…</th></tr></thead><tbody><tr><td><code>name</code></td><td><code>str</code></td><td><strong>ν•„μˆ˜</strong> (<code>license_info</code>κ°€ μ„€μ •λœ 경우). API에 μ‚¬μš©λœ λΌμ΄μ„ μŠ€ μ΄λ¦„μž…λ‹ˆλ‹€.</td></tr><tr><td><code>identifier</code></td><td><code>str</code></td><td>API에 λŒ€ν•œ <a href="https://spdx.org/licenses/" class="external-link" target="_blank">SPDX</a> λΌμ΄μ„ μŠ€ ν‘œν˜„μž…λ‹ˆλ‹€. <code>identifier</code> ν•„λ“œλŠ” <code>url</code> ν•„λ“œμ™€ μƒν˜Έ λ°°νƒ€μ μž…λ‹ˆλ‹€. <small>OpenAPI 3.1.0, FastAPI 0.99.0λΆ€ν„° μ‚¬μš© κ°€λŠ₯</small></td></tr><tr><td><code>url</code></td><td><code>str</code></td><td>API에 μ‚¬μš©λœ λΌμ΄μ„ μŠ€μ˜ URLμž…λ‹ˆλ‹€. URL ν˜•μ‹μ΄μ–΄μ•Ό ν•©λ‹ˆλ‹€.</td></tr></tbody></table></details> |
19+
20+
λ‹€μŒκ³Ό 같이 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€:
21+
22+
```Python hl_lines="3-16 19-32"
23+
{!../../docs_src/metadata/tutorial001.py!}
24+
```
25+
26+
/// tip
27+
28+
`description` ν•„λ“œμ— λ§ˆν¬λ‹€μš΄μ„ μ‚¬μš©ν•  수 있으며, 좜λ ₯μ—μ„œ λ Œλ”λ§λ©λ‹ˆλ‹€.
29+
30+
///
31+
32+
이 ꡬ성을 μ‚¬μš©ν•˜λ©΄ λ¬Έμ„œ μžλ™ν™”(둜 μƒμ„±λœ) API λ¬Έμ„œλŠ” λ‹€μŒκ³Ό 같이 λ³΄μž…λ‹ˆλ‹€:
33+
34+
<img src="/img/tutorial/metadata/image01.png">
35+
36+
## λΌμ΄μ„ μŠ€ μ‹λ³„μž
37+
38+
OpenAPI 3.1.0 및 FastAPI 0.99.0λΆ€ν„° `license_info`에 `identifier`λ₯Ό URL λŒ€μ‹  μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
39+
40+
예:
41+
42+
```Python hl_lines="31"
43+
{!../../docs_src/metadata/tutorial001_1.py!}
44+
```
45+
46+
## νƒœκ·Έμ— λŒ€ν•œ 메타데이터
47+
48+
`openapi_tags` λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 경둜 μž‘λ™μ„ κ·Έλ£Ήν™”ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” νƒœκ·Έμ— μΆ”κ°€ 메타데이터λ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
49+
50+
λ¦¬μŠ€νŠΈλŠ” 각 νƒœκ·Έμ— λŒ€ν•΄ ν•˜λ‚˜μ˜ λ”•μ…”λ„ˆλ¦¬λ₯Ό 포함해야 ν•©λ‹ˆλ‹€.
51+
52+
각 λ”•μ…”λ„ˆλ¦¬μ—λŠ” λ‹€μŒμ΄ 포함될 수 μžˆμŠ΅λ‹ˆλ‹€:
53+
54+
* `name` (**ν•„μˆ˜**): `tags` λ§€κ°œλ³€μˆ˜μ—μ„œ *경둜 μž‘λ™*κ³Ό `APIRouter`에 μ‚¬μš©λœ νƒœκ·Έ 이름과 λ™μΌν•œ `str`μž…λ‹ˆλ‹€.
55+
* `description`: νƒœκ·Έμ— λŒ€ν•œ κ°„λ‹¨ν•œ μ„€λͺ…을 담은 `str`μž…λ‹ˆλ‹€. λ§ˆν¬λ‹€μš΄μ„ μ‚¬μš©ν•  수 있으며 λ¬Έμ„œ UI에 ν‘œμ‹œλ©λ‹ˆλ‹€.
56+
* `externalDocs`: μ™ΈλΆ€ λ¬Έμ„œλ₯Ό μ„€λͺ…ν•˜λŠ” `dict`이며:
57+
* `description`: μ™ΈλΆ€ λ¬Έμ„œμ— λŒ€ν•œ κ°„λ‹¨ν•œ μ„€λͺ…을 담은 `str`μž…λ‹ˆλ‹€.
58+
* `url` (**ν•„μˆ˜**): μ™ΈλΆ€ λ¬Έμ„œμ˜ URL을 담은 `str`μž…λ‹ˆλ‹€.
59+
60+
### νƒœκ·Έμ— λŒ€ν•œ 메타데이터 생성
61+
62+
`users` 및 `items`에 λŒ€ν•œ νƒœκ·Έ μ˜ˆμ‹œμ™€ ν•¨κ»˜ 메타데이터λ₯Ό μƒμ„±ν•˜κ³  이λ₯Ό `openapi_tags` λ§€κ°œλ³€μˆ˜λ‘œ 전달해 λ³΄κ² μŠ΅λ‹ˆλ‹€:
63+
64+
```Python hl_lines="3-16 18"
65+
{!../../docs_src/metadata/tutorial004.py!}
66+
```
67+
68+
μ„€λͺ… μ•ˆμ— λ§ˆν¬λ‹€μš΄μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ "login"은 ꡡ게(**login**) ν‘œμ‹œλ˜κ³ , "fancy"λŠ” κΈ°μšΈμž„κΌ΄(_fancy_)둜 ν‘œμ‹œλ©λ‹ˆλ‹€.
69+
70+
/// tip
71+
72+
μ‚¬μš© 쀑인 λͺ¨λ“  νƒœκ·Έμ— 메타데이터λ₯Ό μΆ”κ°€ν•  ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€.
73+
74+
///
75+
76+
### νƒœκ·Έ μ‚¬μš©
77+
78+
`tags` λ§€κ°œλ³€μˆ˜λ₯Ό *경둜 μž‘λ™* 및 `APIRouter`와 ν•¨κ»˜ μ‚¬μš©ν•˜μ—¬ νƒœκ·Έμ— ν• λ‹Ήν•  수 μžˆμŠ΅λ‹ˆλ‹€:
79+
80+
```Python hl_lines="21 26"
81+
{!../../docs_src/metadata/tutorial004.py!}
82+
```
83+
84+
/// info
85+
86+
νƒœκ·Έμ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ [경둜 μž‘λ™ ꡬ성](path-operation-configuration.md#tags){.internal-link target=_blank}μ—μ„œ μ½μ–΄λ³΄μ„Έμš”.
87+
88+
///
89+
90+
### λ¬Έμ„œ 확인
91+
92+
이제 λ¬Έμ„œλ₯Ό ν™•μΈν•˜λ©΄ λͺ¨λ“  μΆ”κ°€ 메타데이터가 ν‘œμ‹œλ©λ‹ˆλ‹€:
93+
94+
<img src="/img/tutorial/metadata/image02.png">
95+
96+
### νƒœκ·Έ μˆœμ„œ
97+
98+
각 νƒœκ·Έ 메타데이터 λ”•μ…”λ„ˆλ¦¬μ˜ μˆœμ„œλŠ” λ¬Έμ„œ UI에 ν‘œμ‹œλ˜λŠ” μˆœμ„œλ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.
99+
100+
예λ₯Ό λ“€μ–΄, μ•ŒνŒŒλ²³ μˆœμ„œμƒ `users`λŠ” `items` 뒀에 μ˜€μ§€λ§Œ, μš°λ¦¬λŠ” `users` 메타데이터λ₯Ό 리슀트의 첫 번째 λ”•μ…”λ„ˆλ¦¬λ‘œ μΆ”κ°€ν–ˆκΈ° λ•Œλ¬Έμ— λ¨Όμ € ν‘œμ‹œλ©λ‹ˆλ‹€.
101+
102+
## OpenAPI URL
103+
104+
OpenAPI κ΅¬μ‘°λŠ” 기본적으둜 `/openapi.json`μ—μ„œ μ œκ³΅λ©λ‹ˆλ‹€.
105+
106+
`openapi_url` λ§€κ°œλ³€μˆ˜λ₯Ό 톡해 이λ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
107+
108+
예λ₯Ό λ“€μ–΄, 이λ₯Ό `/api/v1/openapi.json`에 μ œκ³΅ν•˜λ„λ‘ μ„€μ •ν•˜λ €λ©΄:
109+
110+
```Python hl_lines="3"
111+
{!../../docs_src/metadata/tutorial002.py!}
112+
```
113+
114+
OpenAPI ꡬ쑰λ₯Ό μ™„μ „νžˆ λΉ„ν™œμ„±ν™”ν•˜λ €λ©΄ `openapi_url=None`으둜 μ„€μ •ν•  수 있으며, 이λ₯Ό μ‚¬μš©ν•˜μ—¬ λ¬Έμ„œν™” μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ„ λΉ„ν™œμ„±ν™”λ©λ‹ˆλ‹€.
115+
116+
## λ¬Έμ„œν™” URL
117+
118+
ν¬ν•¨λœ 두 κ°€μ§€ λ¬Έμ„œν™” μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€:
119+
120+
* **Swagger UI**: `/docs`μ—μ„œ μ œκ³΅λ©λ‹ˆλ‹€.
121+
* `docs_url` λ§€κ°œλ³€μˆ˜λ‘œ URL을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
122+
* `docs_url=None`으둜 μ„€μ •ν•˜μ—¬ λΉ„ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
123+
* **ReDoc**: `/redoc`μ—μ„œ μ œκ³΅λ©λ‹ˆλ‹€.
124+
* `redoc_url` λ§€κ°œλ³€μˆ˜λ‘œ URL을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
125+
* `redoc_url=None`으둜 μ„€μ •ν•˜μ—¬ λΉ„ν™œμ„±ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
126+
127+
예λ₯Ό λ“€μ–΄, Swagger UIλ₯Ό `/documentation`μ—μ„œ μ œκ³΅ν•˜κ³  ReDoc을 λΉ„ν™œμ„±ν™”ν•˜λ €λ©΄:
128+
129+
```Python hl_lines="3"
130+
{!../../docs_src/metadata/tutorial003.py!}
131+
```

0 commit comments

Comments
Β (0)