]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🌐 Add Korean translation for `docs/ko/docs/features.md` (#10976)
authorKani Kim <kkh5428@gmail.com>
Tue, 23 Jan 2024 14:04:27 +0000 (23:04 +0900)
committerGitHub <noreply@github.com>
Tue, 23 Jan 2024 14:04:27 +0000 (09:04 -0500)
docs/ko/docs/features.md [new file with mode: 0644]

diff --git a/docs/ko/docs/features.md b/docs/ko/docs/features.md
new file mode 100644 (file)
index 0000000..42a3ff1
--- /dev/null
@@ -0,0 +1,203 @@
+---
+hide:
+  - navigation
+---
+
+# κΈ°λŠ₯
+
+## FastAPI의 κΈ°λŠ₯
+
+**FastAPI**λŠ” λ‹€μŒκ³Ό κ°™μ€ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€:
+
+### κ°œλ°©ν˜• ν‘œμ€€μ„ κΈ°λ°˜μœΌλ‘œ
+
+* <abbr title="μ—”λ“œν¬μΈνŠΈ, λΌμš°νŠΈλ‘œλ„ μ•Œλ €μ Έ μžˆμŠ΅λ‹ˆλ‹€">경둜</abbr><abbr title="POST, GET, PUT, DELETE와 κ°™μ€ HTTP λ©”μ†Œλ“œλ‘œ μ•Œλ €μ Έ μžˆμŠ΅λ‹ˆλ‹€">μž‘λ™</abbr>, λ§€κ°œλ³€μˆ˜, λ³Έλ¬Έ μš”μ²­, λ³΄μ•ˆ κ·Έ μ™Έμ˜ μ„ μ–Έμ„ ν¬ν•¨ν•œ API μƒμ„±μ„ μœ„ν•œ <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank"><strong>OpenAPI</strong></a>
+* <a href="https://json-schema.org/" class="external-link" target="_blank"><strong>JSON Schema</strong></a> (OpenAPI μžμ²΄κ°€ JSON Schemaλ₯Ό κΈ°λ°˜μœΌλ‘œ ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€)λ₯Ό μ‚¬μš©ν•œ μžλ™ λ°μ΄ν„° λͺ¨λΈ λ¬Έμ„œν™”.
+* λ‹¨μˆœνžˆ λ– μ˜¬λ €μ„œ λ§λΆ™μΈ κΈ°λŠ₯이 μ•„λ‹™λ‹ˆλ‹€. μ„Έμ‹¬ν•œ κ²€ν† λ₯Ό κ±°μΉœ ν›„, μ΄λŸ¬ν•œ ν‘œμ€€μ„ κΈ°λ°˜μœΌλ‘œ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
+* μ΄λŠ” λ˜ν•œ λ‹€μ–‘ν•œ μ–Έμ–΄λ‘œ μžλ™μ μΈ **ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œ μƒμ„±**을 μ‚¬μš©ν•  μˆ˜ μžˆκ²Œ μ§€μ›ν•©λ‹ˆλ‹€.
+
+### λ¬Έμ„œ μžλ™ν™”
+
+λŒ€ν™”ν˜• API λ¬Έμ„œμ™€ μ›Ή νƒμƒ‰ μœ μ € μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. ν”„λ ˆμž„μ›Œν¬κ°€ OpenAPIλ₯Ό κΈ°λ°˜μœΌλ‘œ ν•˜κΈ°μ—, 2κ°€μ§€ μ˜΅μ…˜μ΄ κΈ°λ³Έμ μœΌλ‘œ λ“€μ–΄κ°„ μ—¬λŸ¬ μ˜΅μ…˜μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€.
+
+* λŒ€ν™”ν˜• νƒμƒ‰ <a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank"><strong>Swagger UI</strong></a>λ₯Ό μ΄μš©ν•΄, λΈŒλΌμš°μ €μ—μ„œ λ°”λ‘œ μ—¬λŸ¬λΆ„μ˜ APIλ₯Ό ν˜ΈμΆœν•˜κ±°λ‚˜ ν…ŒμŠ€νŠΈν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png)
+
+* <a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank"><strong>ReDoc</strong></a>을 μ΄μš©ν•΄ API λ¬Έμ„œν™”λ₯Ό λŒ€μ²΄ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png)
+
+### κ·Έμ € ν˜„λŒ€ νŒŒμ΄μ¬
+
+(Pydantic λ•뢄에) FastAPIλŠ” ν‘œμ€€ **파이썬 3.6 νƒ€μž…** μ„ μ–Έμ— κΈ°λ°˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μƒˆλ‘œ λ°°μšΈ λ¬Έλ²•이 μ—†μŠ΅λ‹ˆλ‹€. κ·Έμ € ν‘œμ€€μ μΈ ν˜„λŒ€ νŒŒμ΄μ¬μž…λ‹ˆλ‹€.
+
+λ§Œμ•½ μ—¬λŸ¬λΆ„이 νŒŒμ΄μ¬ νƒ€μž…을 μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€μ— λŒ€ν•œ 2λΆ„ μ •λ„μ˜ λ³΅μŠ΅μ΄ ν•„μš”ν•˜λ‹€λ©΄ (비둝 μ—¬λŸ¬λΆ„이 FastAPIλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€ ν•˜λ”라도), λ‹€μŒμ˜ μ§§μ€ μžμŠ΅μ„œλ₯Ό ν™•μΈν•˜μ„Έμš”: [파이썬 νƒ€μž…](python-types.md){.internal-link target=\_blank}.
+
+μ—¬λŸ¬λΆ„μ€ νƒ€μž…을 μ΄μš©ν•œ ν‘œμ€€ νŒŒμ΄μ¬μ„ λ‹€μŒκ³Ό κ°™μ΄ μ μ„ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€:
+
+```Python
+from datetime import date
+
+from pydantic import BaseModel
+
+# λ³€μˆ˜λ₯Ό str둜 μ„ μ–Έ
+# κ·Έ ν›„ ν•¨μˆ˜ μ•ˆμ—μ„œ νŽΈμ§‘κΈ° μ§€μ›μ„ λ°›μœΌμ„Έμš”
+def main(user_id: str):
+    return user_id
+
+
+# Pydantic λͺ¨λΈ
+class User(BaseModel):
+    id: int
+    name: str
+    joined: date
+```
+
+μœ„μ˜ μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μ΄ μ‚¬μš©λ  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€:
+
+```Python
+my_user: User = User(id=3, name="John Doe", joined="2018-07-19")
+
+second_user_data = {
+    "id": 4,
+    "name": "Mary",
+    "joined": "2018-11-30",
+}
+
+my_second_user: User = User(**second_user_data)
+```
+
+!!! μ •보
+    `**second_user_data`κ°€ λœ»ν•˜λŠ” κ²ƒ:
+
+    `second_user_data` λ”•μ…”λ„ˆλ¦¬μ˜ ν‚€μ™€ κ°’을 ν‚€-κ°’ μΈμžλ‘œμ„œ λ°”λ‘œ λ„˜κ²¨μ€λ‹ˆλ‹€. λ‹€μŒκ³Ό λ™μΌν•©λ‹ˆλ‹€: `User(id=4, name="Mary", joined="2018-11-30")`
+
+### νŽΈμ§‘κΈ° μ§€μ›
+
+λͺ¨λ“  ν”„λ ˆμž„μ›Œν¬λŠ” μ‚¬μš©ν•˜κΈ° μ‰½κ³  μ§κ΄€μ μœΌλ‘œ μ„€κ³„λ˜μ—ˆμœΌλ©°, μ’‹μ€ κ°œλ°œ κ²½ν—˜μ„ λ³΄μž₯ν•˜κΈ° μœ„ν•΄ κ°œλ°œμ„ μ‹œμž‘ν•˜κΈ°λ„ μ „에 λͺ¨λ“  κ²°μ •듀은 μ—¬λŸ¬ νŽΈμ§‘κΈ°μ—μ„œ ν…ŒμŠ€νŠΈλ©λ‹ˆλ‹€.
+
+졜근 νŒŒμ΄μ¬ κ°œλ°œμž μ„€λ¬Έμ‘°μ‚¬μ—μ„œ <a href="https://www.jetbrains.com/research/python-developers-survey-2017/#tools-and-features" class="external-link" target="_blank">"μžλ™ μ™„μ„±"이 κ°€μž₯ λ§Žμ΄ μ‚¬μš©λ˜λŠ” κΈ°λŠ₯</a>μ΄λΌλŠ” κ²ƒμ΄ λ°ν˜€μ‘ŒμŠ΅λ‹ˆλ‹€.
+
+**FastAPI** ν”„λ ˆμž„μ›Œν¬μ˜ λͺ¨λ“  λΆ€λΆ„은 μ΄λ₯Ό μΆ©μ‘±ν•˜κΈ° μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μžλ™μ™„성은 μ–΄λА κ³³μ—μ„œλ‚˜ μž‘λ™ν•©λ‹ˆλ‹€.
+
+μ—¬λŸ¬λΆ„μ€ λ¬Έμ„œλ‘œ λ‹€μ‹œ λŒμ•„μ˜¬ μΌμ΄ κ±°μ˜ μ—†μ„ κ²λ‹ˆλ‹€.
+
+λ‹€μŒμ€ νŽΈμ§‘κΈ°κ°€ μ–΄λ–»κ²Œ μ—¬λŸ¬λΆ„을 λ„μ™€μ£ΌλŠ”μ§€ λ³΄μ—¬μ€λ‹ˆλ‹€:
+
+* <a href="https://code.visualstudio.com/" class="external-link" target="_blank">Visual Studio Code</a>μ—μ„œ:
+
+![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png)
+
+* <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">PyCharm</a>μ—μ„œ:
+
+![editor support](https://fastapi.tiangolo.com/img/pycharm-completion.png)
+
+μ—¬λŸ¬λΆ„μ΄ μ΄μ „에 λΆˆκ°€λŠ₯ν•˜λ‹€κ³  κ³ λ €ν–ˆλ˜ μ½”λ“œλ„ μ™„μ„±ν•  μˆ˜ μžˆμ„ κ²λ‹ˆλ‹€. μ˜ˆλ₯Ό λ“€μ–΄, μš”μ²­μ—μ„œ μ „λ‹¬λ˜λŠ” (쀑첩될 μˆ˜λ„ μžˆλŠ”)JSON λ³Έλ¬Έ λ‚΄λΆ€μ— μžˆλŠ” `price` ν‚€μž…λ‹ˆλ‹€.
+
+잘λͺ»λœ ν‚€ μ΄λ¦„을 μ μ„ μΌλ„, λ¬Έμ„œλ₯Ό μ™”λ‹€ κ°”λ‹€ν•  μΌλ„ μ—†μœΌλ©°, ν˜Ήμ€ λ§ˆμ§€λ§‰μœΌλ‘œ `username` λ˜λŠ” `user_name`을 μ‚¬μš©ν–ˆλŠ”μ§€ μ°ΎκΈ° μœ„ν•΄ μœ„ μ•„λž˜λ‘œ μŠ€ν¬λ‘€ν•  μΌλ„ μ—†μŠ΅λ‹ˆλ‹€.
+
+### ν† λ§‰ μ •보
+
+μ–΄λŠ κ³³μ—μ„œλ‚˜ μ„ νƒμ  κ΅¬μ„±μ΄ κ°€λŠ₯ν•œ λͺ¨λ“  κ²ƒμ— ν•©λ¦¬μ μΈ κΈ°λ³Έκ°’이 μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λ“  λ§€κ°œλ³€μˆ˜λŠ” μ—¬λŸ¬λΆ„이 ν•„μš”ν•˜κ±°λ‚˜, μ›ν•˜λŠ” APIλ₯Ό μ •μ˜ν•˜κΈ° μœ„ν•΄ λ―Έμ„Έν•˜κ²Œ μ‘°μ •ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+ν•˜μ§€λ§Œ κΈ°λ³Έμ μœΌλ‘œ λͺ¨λ“  κ²ƒμ΄ "κ·Έλƒ₯ μž‘λ™ν•©λ‹ˆλ‹€".
+
+### κ²€μ¦
+
+* λ‹€μŒμ„ ν¬ν•¨ν•œ, λŒ€λΆ€λΆ„μ˜ (ν˜Ήμ€ λͺ¨λ“ ?) νŒŒμ΄μ¬ **데이터 νƒ€μž…** κ²€μ¦ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€:
+    * JSON κ°μ²΄ (`dict`).
+    * μ•„μ΄ν…œ νƒ€μž…을 μ •μ˜ν•˜λŠ” JSON λ°°μ—΄ (`list`).
+    * μ΅œμ†Œ κΈΈμ΄μ™€ μ΅œλŒ€ κΈΈμ΄λ₯Ό μ •μ˜ν•˜λŠ” λ¬Έμžμ—΄ (`str`) ν•„λ“œ.
+    * μ΅œμ†Ÿκ°’κ³Ό μ΅œλŒ“값을 κ°€μ§€λŠ” μˆ«μž (`int`, `float`), κ·Έ μ™Έ.
+
+* λ‹€μŒκ³Ό κ°™μ΄ λ”μš± μ΄μƒ‰μ μΈ νƒ€μž…에 λŒ€ν•΄ κ²€μ¦ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€:
+    * URL.
+    * μ΄λ©”일.
+    * UUID.
+    * ...λ‹€λ₯Έ κ²ƒλ“€.
+
+λͺ¨λ“  κ²€μ¦μ€ κ²¬κ³ ν•˜λ©΄μ„œ μž˜ ν™•λ¦½λœ **Pydantic**에 μ˜ν•΄ μ²˜λ¦¬λ©λ‹ˆλ‹€.
+
+### λ³΄μ•ˆκ³Ό μΈμ¦
+
+λ³΄μ•ˆκ³Ό μΈμ¦μ΄ ν†΅ν•©λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ λ°μ΄ν„° λͺ¨λΈκ³Όμ˜ νƒ€ν˜‘없이 μ‚¬μš©ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+λ‹€μŒμ„ ν¬ν•¨ν•˜λŠ”, λͺ¨λ“  λ³΄μ•ˆ μŠ€ν‚€λ§ˆκ°€ OpenAPI에 μ •μ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
+
+* HTTP Basic.
+* **OAuth2** (**JWT tokens** λ˜ν•œ ν¬ν•¨). [OAuth2 with JWT](tutorial/security/oauth2-jwt.md){.internal-link target=\_blank}에 μžˆλŠ” μžμŠ΅μ„œλ₯Ό ν™•인해 λ³΄μ„Έμš”.
+* λ‹€μŒμ— λ“€μ–΄ μžˆλŠ” API ν‚€:
+    * ν—€λ”.
+    * λ§€κ°œλ³€μˆ˜.
+    * μΏ ν‚€ λ° κ·Έ μ™Έ.
+
+μΆ”κ°€μ μœΌλ‘œ (**μ„Έμ…˜ μΏ ν‚€**λ₯Ό ν¬ν•¨ν•œ) λͺ¨λ“  λ³΄μ•ˆ κΈ°λŠ₯은 Starlette에 μžˆμŠ΅λ‹ˆλ‹€.
+
+λͺ¨λ‘ μž¬μ‚¬μš©ν•  μˆ˜ μžˆλŠ” λ„ꡬ와 μ»΄ν¬λ„ŒνŠΈλ‘œ λ§Œλ“€μ–΄μ Έ μžˆμ–΄ μ—¬λŸ¬λΆ„μ˜ μ‹œμŠ€ν…œ, λ°μ΄ν„° μ €μž₯μ†Œ, κ΄€κ³„ν˜• λ° NoSQL λ°μ΄ν„°λ² μ΄μŠ€ λ“±κ³Ό μ‰½κ²Œ ν†΅ν•©ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+### μ˜μ‘΄μ„± μ£Όμž…
+
+FastAPIλŠ” μ‚¬μš©ν•˜κΈ° λ§€μš° κ°„νŽΈν•˜μ§€λ§Œ, μ—„μ²­λ‚œ <abbr title='"μ»΄ν¬λ„ŒνŠΈ", "μžμ›", "μ„œλΉ„μŠ€", "제곡자"λ‘œλ„ μ•Œλ €μ§„'><strong>μ˜μ‘΄μ„± μ£Όμž…</strong></abbr>μ‹œμŠ€ν…œμ„ ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
+
+* μ˜μ‘΄μ„±μ€ μ˜μ‘΄μ„±μ„ κ°€μ§ˆμˆ˜λ„ μžˆμ–΄, μ΄λ₯Ό ν†΅ν•΄ μ˜μ‘΄μ„±μ˜ κ³„μΈ΅μ΄λ‚˜ **μ˜μ‘΄μ„±μ˜ "κ·Έλž˜ν”„"**λ₯Ό ν˜•μ„±ν•©λ‹ˆλ‹€.
+* λͺ¨λ“  κ²ƒμ΄ ν”„λ ˆμž„μ›Œν¬μ— μ˜ν•΄ **μžλ™μ μœΌλ‘œ μ²˜λ¦¬λ©λ‹ˆλ‹€**.
+* λͺ¨λ“  μ˜μ‘΄μ„±μ€ μš”μ²­μ—μ„œ λ°μ΄ν„°λ₯Ό μš”κ΅¬ν•˜μ—¬ μžλ™ λ¬Έμ„œν™”와 **경둜 μž‘동 μ œμ•½μ„ κ°•ν™”ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€**.
+* μ˜μ‘΄μ„±μ—μ„œ μ •μ˜λœ _경둜 μž‘동_ λ§€κ°œλ³€μˆ˜μ— λŒ€ν•΄μ„œλ„ **μžλ™ κ²€μ¦**이 μ΄λ£¨μ–΄ μ§‘λ‹ˆλ‹€.
+* λ³΅μž‘ν•œ μ‚¬μš©μžμ˜ μΈμ¦ μ‹œμŠ€ν…œ, **λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²°**, λ“±λ“±μ„ μ§€μ›ν•©λ‹ˆλ‹€.
+* λ°μ΄ν„°λ² μ΄μŠ€, ν”„λ‘ νŠΈμ—”λ“œ λ“±κ³Ό κ΄€λ ¨λ˜μ–΄ **νƒ€ν˜‘ν•˜μ§€ μ•Šμ•„도 λ©λ‹ˆλ‹€**. ν•˜μ§€λ§Œ κ·Έ λͺ¨λ“  κ²ƒκ³Ό μ‰½κ²Œ ν†΅ν•©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.
+
+### μ œν•œ μ—†λŠ” "ν”ŒλŸ¬κ·ΈμΈ"
+
+λ˜λŠ” λ‹€λ₯Έ λ°©λ²•μœΌλ‘œ, κ·Έκ²ƒλ“€μ„ μ‚¬μš©ν•  ν•„μš” μ—†μ΄ ν•„μš”ν•œ μ½”λ“œλ§Œ μž„ν¬νŠΈν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+μ–΄λŠ ν†΅ν•©λ„ (μ˜μ‘΄μ„±κ³Ό ν•¨κ»˜) μ‚¬μš©ν•˜κΈ° μ‰½κ²Œ μ„€κ³„λ˜μ–΄ μžˆμ–΄, *경둜 μž‘동*에 μ‚¬μš©λœ κ²ƒκ³Ό λ™μΌν•œ κ΅¬μ‘°μ™€ λ¬Έλ²•을 μ‚¬μš©ν•˜μ—¬ 2μ€„μ˜ μ½”λ“œλ‘œ μ—¬λŸ¬λΆ„μ˜ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ‚¬μš©ν•  "ν”ŒλŸ¬κ·ΈμΈ"을 λ§Œλ“€ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+### ν…ŒμŠ€νŠΈ κ²°κ³Ό
+
+* 100% <abbr title="μžλ™μ μœΌλ‘œ ν…ŒμŠ€νŠΈλœ μ½”λ“œμ˜ μ–‘">ν…ŒμŠ€νŠΈ λ²”μœ„</abbr>.
+* 100% <abbr title="파이썬의 νƒ€μž… μ–΄λ…Έν…Œμ΄μ…˜, μ΄λ₯Ό ν†΅ν•΄ μ—¬λŸ¬λΆ„μ˜ νŽΈμ§‘κΈ°μ™€ μ™ΈλΆ€ λ„κ΅¬λŠ” μ—¬λŸ¬λΆ„μ—κ²Œ λ” λ‚˜μ€ μ§€μ›μ„ ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€">νƒ€μž…μ΄ λͺ…μ‹œλœ</abbr> μ½”λ“œ λ² μ΄μŠ€.
+* μƒμš© μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œμ˜ μ‚¬μš©.
+
+## Starlette κΈ°λŠ₯
+
+**FastAPI**λŠ” <a href="https://www.starlette.io/" class="external-link" target="_blank"><strong>Starlette</strong></a>λ₯Ό κΈ°λ°˜μœΌλ‘œ κ΅¬μΆ•λ˜μ—ˆμœΌλ©°, μ΄μ™€ μ™„μ „νžˆ ν˜Έν™˜λ©λ‹ˆλ‹€. λ”°λΌμ„œ, μ—¬λŸ¬λΆ„이 λ³΄μœ ν•˜κ³  μžˆλŠ” μ–΄λ–€ μΆ”가적인 Starlette μ½”λ“œλ„ μž‘동할 κ²ƒμž…λ‹ˆλ‹€.
+
+`FastAPI`λŠ” μ‹€μ œλ‘œ `Starlette`의 ν•˜μœ„ ν΄λž˜μŠ€μž…λ‹ˆλ‹€. κ·Έλž˜μ„œ, μ—¬λŸ¬λΆ„이 μ΄λ―Έ Starlette을 μ•Œκ³  μžˆκ±°λ‚˜ μ‚¬μš©ν•˜κ³  μžˆμœΌλ©΄, λŒ€λΆ€λΆ„μ˜ κΈ°λŠ₯이 κ°™μ€ λ°©μ‹μœΌλ‘œ μž‘동할 κ²ƒμž…λ‹ˆλ‹€.
+
+**FastAPI**λ₯Ό μ‚¬μš©ν•˜λ©΄ μ—¬λŸ¬λΆ„은 **Starlette**의 κΈ°λŠ₯ λŒ€λΆ€λΆ„을 μ–»κ²Œ λ  κ²ƒμž…λ‹ˆλ‹€(FastAPIκ°€ λ‹¨μˆœνžˆ Starletteλ₯Ό κ°•ν™”ν–ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€):
+
+* μ•„μ£Ό μΈμƒμ μΈ μ„±λŠ₯. μ΄λŠ” <a href="https://github.com/encode/starlette#performance" class="external-link" target="_blank">**NodeJS**와 **Go**와 λ™λ“±ν•˜κ²Œ μ‚¬μš© κ°€λŠ₯ν•œ κ°€μž₯ λΉ λ₯Έ νŒŒμ΄μ¬ ν”„λ ˆμž„μ›Œν¬ μ€‘ ν•˜λ‚˜μž…λ‹ˆλ‹€</a>.
+* **WebSocket** μ§€μ›.
+* ν”„λ‘œμ„ΈμŠ€ λ‚΄μ˜ λ°±κ·ΈλΌμš΄λ“œ μž‘μ—….
+* μ‹œμž‘κ³Ό μ’…λ£Œ μ΄λ²€νŠΈ.
+* HTTPX κΈ°λ°˜ ν…ŒμŠ€νŠΈ ν΄λΌμ΄μ–ΈνŠΈ.
+* **CORS**, GZip, μ •적 νŒŒμΌ, μŠ€νŠΈλ¦¬λ° μ‘λ‹΅.
+* **μ„Έμ…˜κ³Ό μΏ ν‚€** μ§€μ›.
+* 100% ν…ŒμŠ€νŠΈ λ²”μœ„.
+* 100% νƒ€μž…이 λͺ…μ‹œλœ μ½”λ“œ λ² μ΄μŠ€.
+
+## Pydantic κΈ°λŠ₯
+
+**FastAPI**λŠ” <a href="https://pydantic-docs.helpmanual.io" class="external-link" target="_blank"><strong>Pydantic</strong></a>을 κΈ°λ°˜μœΌλ‘œ ν•˜λ©° Pydanticκ³Ό μ™„λ²½ν•˜κ²Œ ν˜Έν™˜λ©λ‹ˆλ‹€. κ·Έλž˜μ„œ μ–΄λА μΆ”가적인 Pydantic μ½”λ“œλ₯Ό μ—¬λŸ¬λΆ„이 κ°€μ§€κ³  μžˆλ“  μž‘동할 κ²ƒμž…λ‹ˆλ‹€.
+
+Pydantic을 κΈ°λ°˜μœΌλ‘œ ν•˜λŠ”, λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μœ„ν•œ <abbr title="Object-Relational Mapper">ORM</abbr>, <abbr title="Object-Document Mapper">ODM</abbr>을 ν¬ν•¨ν•œ μ™ΈλΆ€ λΌμ΄λΈŒλŸ¬λ¦¬λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.
+
+μ΄λŠ” λͺ¨λ“  κ²ƒμ΄ μžλ™μœΌλ‘œ κ²€μ¦λ˜κΈ° λ•Œλ¬Έμ—, λ§Žμ€ κ²½μš°μ—μ„œ μš”청을 ν†΅ν•΄ μ–»μ€ λ™μΌν•œ κ°μ²΄λ₯Ό, **직접 λ°μ΄ν„°λ² μ΄μŠ€λ‘œ** λ„˜κ²¨μ€„ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+λ°˜λŒ€λ‘œλ„ λ§ˆμ°¬κ°€μ§€μ΄λ©°, λ§Žμ€ κ²½μš°μ—μ„œ μ—¬λŸ¬λΆ„은 **직접 ν΄λΌμ΄μ–ΈνŠΈλ‘œ** κ·Έμ € κ°μ²΄λ₯Ό λ„˜κ²¨μ€„ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+
+**FastAPI**λ₯Ό μ‚¬μš©ν•˜λ©΄ (λͺ¨λ“  λ°μ΄ν„° μ²˜λ¦¬λ₯Ό μœ„ν•΄ FastAPIκ°€ Pydantic을 κΈ°λ°˜μœΌλ‘œ ν•˜κΈ° μžˆκΈ°μ—) **Pydantic**의 λͺ¨λ“  κΈ°λŠ₯을 μ–»κ²Œ λ©λ‹ˆλ‹€:
+
+* **μ–΄λ ΅μ§€ μ•Šμ€ μ–Έμ–΄**:
+    * μƒˆλ‘œμš΄ μŠ€ν‚€λ§ˆ μ •μ˜ λ§ˆμ΄ν¬λ‘œ μ–Έμ–΄λ₯Ό λ°°μš°μ§€ μ•Šμ•„도 λ©λ‹ˆλ‹€.
+    * μ—¬λŸ¬λΆ„이 νŒŒμ΄μ¬ νƒ€μž…을 μ•ˆλ‹€λ©΄, μ—¬λŸ¬λΆ„은 Pydantic을 μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€ μ•„λŠ” κ²λ‹ˆλ‹€.
+* μ—¬λŸ¬λΆ„μ˜ **<abbr title="톡합 κ°œλ°œ ν™˜κ²½, μ½”λ“œ νŽΈμ§‘κΈ°μ™€ λΉ„μŠ·ν•©λ‹ˆλ‹€">IDE</abbr>/<abbr title="μ½”λ“œ μ—λŸ¬λ₯Ό ν™•μΈν•˜λŠ” ν”„λ‘œκ·Έλž¨">λ¦°ν„°</abbr>/λ‡Œ**와 μž˜ μ–΄μšΈλ¦½λ‹ˆλ‹€:
+    * Pydantic λ°μ΄ν„° κ΅¬μ‘°λŠ” λ‹¨μˆœ μ—¬λŸ¬λΆ„이 μ •μ˜ν•œ ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€μ΄κΈ° λ•Œλ¬Έμ—, μžλ™ μ™„μ„±, λ¦°νŒ…, mypy κ·Έλ¦¬κ³  μ—¬λŸ¬λΆ„μ˜ μ§κ΄€κΉŒμ§€ μ—¬λŸ¬λΆ„μ˜ κ²€μ¦λœ λ°μ΄ν„°μ™€ μ˜¬λ°”λ₯΄κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.
+* **λ³΅μž‘ν•œ κ΅¬μ‘°**λ₯Ό κ²€μ¦ν•©λ‹ˆλ‹€:
+    * κ³„측적인 Pydantic λͺ¨λΈ, νŒŒμ΄μ¬ `typing`의 `List`와 `Dict`, κ·Έ μ™Έλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
+    * κ·Έλ¦¬κ³  κ²€μ¦μžλŠ” λ³΅μž‘ν•œ λ°μ΄ν„° μŠ€ν‚€λ§ˆλ₯Ό λͺ…ν™•ν•˜κ³  μ‰½κ²Œ μ •μ˜ λ° ν™•μΈν•˜λ©° JSON μŠ€ν‚€λ§ˆλ‘œ λ¬Έμ„œν™”ν•©λ‹ˆλ‹€.
+    * μ—¬λŸ¬λΆ„은 κΉŠκ²Œ **μ€‘μ²©λœ JSON** κ°μ²΄λ₯Ό κ°€μ§ˆ μˆ˜ μžˆμœΌλ©°, μ΄ κ°μ²΄ λͺ¨λ‘ κ²€μ¦ν•˜κ³  μ„€λͺ…을 λΆ™μΌ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+* **ν™•μž₯ κ°€λŠ₯μ„±**:
+    * Pydantic은 μ‚¬μš©μž μ •μ˜ λ°μ΄ν„° νƒ€μž…을 μ •μ˜ν•  μˆ˜ μžˆκ²Œ ν•˜κ±°λ‚˜, κ²€μ¦μž λ°μ½”λ ˆμ΄ν„°κ°€ λΆ™μ€ λͺ¨λΈμ˜ λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ²€μ¦μ„ ν™•μž₯ν•  μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
+* 100% ν…ŒμŠ€νŠΈ λ²”μœ„.