--- /dev/null
+# μμ‘΄μ±
+
+**FastAPI**λ μμ£Ό κ°λ ₯νμ§λ§ μ§κ΄μ μΈ **<abbr title="μ»΄ν¬λνΈ, μμ, μ 곡μ, μλΉμ€, μΈμ ν°λΈλ‘ μλ €μ Έ μμ΅λλ€">μμ‘΄μ± μ£Όμ
</abbr>** μμ€ν
μ κ°μ§κ³ μμ΅λλ€.
+
+μ΄λ μ¬μ©νκΈ° μμ£Ό μ½κ² μ€κ³νμΌλ©°, μ΄λ κ°λ°μλ λ€λ₯Έ μ»΄ν¬λνΈμ **FastAPI**λ₯Ό μ½κ² ν΅ν©ν μ μλλ‘ λ§λ€μμ΅λλ€.
+
+## "μμ‘΄μ± μ£Όμ
"μ 무μμ
λκΉ?
+
+**"μμ‘΄μ± μ£Όμ
"**μ νλ‘κ·Έλλ°μμ μ¬λ¬λΆμ μ½λ(μ΄ κ²½μ°, κ²½λ‘ λμ ν¨μ)κ° μλνκ³ μ¬μ©νλ λ° νμλ‘ νλ κ², μ¦ "μμ‘΄μ±"μ μ μΈν μ μλ λ°©λ²μ μλ―Έν©λλ€.
+
+κ·Έ νμ, μμ€ν
(μ΄ κ²½μ° FastAPI)μ μ¬λ¬λΆμ μ½λκ° μꡬνλ μμ‘΄μ±μ μ 곡νκΈ° μν΄ νμν λͺ¨λ μμ
μ μ²λ¦¬ν©λλ€.(μμ‘΄μ±μ "μ£Όμ
"ν©λλ€)
+
+μ΄λ μ¬λ¬λΆμ΄ λ€μκ³Ό κ°μ μ¬νμ νμλ‘ ν λ λ§€μ° μ μ©ν©λλ€:
+
+* 곡μ©λ λ‘μ§μ κ°μ‘μ κ²½μ° (κ°μ μ½λ λ‘μ§μ΄ κ³μ λ°λ³΅λλ κ²½μ°).
+* λ°μ΄ν°λ² μ΄μ€ μ°κ²°μ 곡μ νλ κ²½μ°.
+* 보μ, μΈμ¦, μν μꡬ μ¬ν λ±μ κ°μ νλ κ²½μ°.
+* κ·Έλ¦¬κ³ λ§μ λ€λ₯Έ μ¬ν...
+
+μ΄ λͺ¨λ μ¬νμ ν λ μ½λ λ°λ³΅μ μ΅μνν©λλ€.
+
+## 첫λ²μ§Έ λ¨κ³
+
+μμ£Ό κ°λ¨ν μμ λ₯Ό λ΄
μλ€. λ무 κ°λ¨ν κ²μ΄κΈ°μ μ§κΈ λΉμ₯μ μ μ©νμ§ μμ μ μμ΅λλ€.
+
+νμ§λ§ μ΄λ₯Ό ν΅ν΄ **μμ‘΄μ± μ£Όμ
** μμ€ν
μ΄ μ΄λ»κ² μλνλμ§μ μ€μ μ λ κ²μ
λλ€.
+
+### μμ‘΄μ± νΉμ "λνλλΈ" λ§λ€κΈ°
+
+μμ‘΄μ±μ μ§μ€ν΄ λ΄
μλ€.
+
+*κ²½λ‘ μλ ν¨μ*κ° κ°μ§ μ μλ λͺ¨λ λ§€κ°λ³μλ₯Ό κ°λ λ¨μν ν¨μμ
λλ€:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="8-9"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="8-11"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="9-12"
+ {!> ../../../docs_src/dependencies/tutorial001_an.py!}
+ ```
+
+=== "Python 3.10+ Annotatedκ° μλ κ²½μ°"
+
+ !!! ν
+ κ°λ₯νλ€λ©΄ `Annotated`κ° λ¬λ¦° λ²μ μ κΆμ₯ν©λλ€.
+
+ ```Python hl_lines="6-7"
+ {!> ../../../docs_src/dependencies/tutorial001_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotatedκ° μλ κ²½μ°"
+
+ !!! ν
+ κ°λ₯νλ€λ©΄ `Annotated`κ° λ¬λ¦° λ²μ μ κΆμ₯ν©λλ€.
+
+ ```Python hl_lines="8-11"
+ {!> ../../../docs_src/dependencies/tutorial001.py!}
+ ```
+
+μ΄κ² λ€μ
λλ€.
+
+**λ¨ λ μ€μ
λλ€**.
+
+κ·Έλ¦¬κ³ , μ΄ ν¨μλ μ¬λ¬λΆμ λͺ¨λ *κ²½λ‘ μλ ν¨μ*κ° κ°μ§κ³ μλ κ²κ³Ό κ°μ ννμ ꡬ쑰λ₯Ό κ°μ§κ³ μμ΅λλ€.
+
+μ¬λ¬λΆμ μ΄λ₯Ό "λ°μ½λ μ΄ν°"κ° μλ (`@app.get("/some-path")`κ° μλ) *κ²½λ‘ μλ ν¨μ*λΌκ³ μκ°ν μ μμ΅λλ€.
+
+κ·Έλ¦¬κ³ μ¬λ¬λΆμ΄ μνλ 무μμ΄λ λ°νν μ μμ΅λλ€.
+
+μ΄ κ²½μ°, μ΄ μμ‘΄μ±μ λ€μκ³Ό κ°μ κ²½μ°λ₯Ό κΈ°λν©λλ€:
+
+* μ νμ μΈ μΏΌλ¦¬ λ§€κ°λ³μ `q`, `str`μ μλ£νμΌλ‘ κ°μ§λλ€.
+* μ νμ μΈ μΏΌλ¦¬ λ§€κ°λ³μ `skip`, `int`λ₯Ό μλ£νμΌλ‘ κ°μ§λ©° κΈ°λ³Έ κ°μ `0`μ
λλ€.
+* μ νμ μΈ μΏΌλ¦¬ λ§€κ°λ³μ `limit`,`int`λ₯Ό μλ£νμΌλ‘ κ°μ§λ©° κΈ°λ³Έ κ°μ `100`μ
λλ€.
+
+κ·Έ ν μμ κ°μ ν¬ν¨ν `dict` μλ£νμΌλ‘ λ°νν λΏμ
λλ€.
+
+!!! μ 보
+ FastAPIλ 0.95.0 λ²μ λΆν° `Annotated`μ λν μ§μμ (κ·Έλ¦¬κ³ μ΄λ₯Ό μ¬μ©νκΈ° κΆμ₯ν©λλ€) μΆκ°νμ΅λλ€.
+
+ μλ λ²μ μ κ°μ§κ³ μλ κ²½μ°, `Annotated`λ₯Ό μ¬μ©νλ € νλ©΄ μλ¬λ₯Ό λ§μ΄νκ² λ κ²μ
λλ€.
+
+ `Annotated`λ₯Ό μ¬μ©νκΈ° μ μ μ΅μ 0.95.1λ‘ [FastAPI λ²μ μ
κ·Έλ μ΄λ](../../deployment/versions.md#upgrading-the-fastapi-versions){.internal-link target=_blank}λ₯Ό νμ€νκ² νμΈμ.
+
+### `Depends` λΆλ¬μ€κΈ°
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="3"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="3"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="3"
+ {!> ../../../docs_src/dependencies/tutorial001_an.py!}
+ ```
+
+=== "Python 3.10+ Annotatedκ° μλ κ²½μ°"
+
+ !!! ν
+ κ°λ₯νλ€λ©΄ `Annotated`κ° λ¬λ¦° λ²μ μ κΆμ₯ν©λλ€.
+
+ ```Python hl_lines="1"
+ {!> ../../../docs_src/dependencies/tutorial001_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotatedκ° μλ κ²½μ°"
+
+ !!! ν
+ κ°λ₯νλ€λ©΄ `Annotated`κ° λ¬λ¦° λ²μ μ κΆμ₯ν©λλ€.
+
+ ```Python hl_lines="3"
+ {!> ../../../docs_src/dependencies/tutorial001.py!}
+ ```
+
+### "μμ‘΄μ"μ μμ‘΄μ± λͺ
μνκΈ°
+
+*κ²½λ‘ μλ ν¨μ*μ λ§€κ°λ³μλ‘ `Body`, `Query` λ±μ μ¬μ©νλ λ°©μκ³Ό κ°μ΄ μλ‘μ΄ λ§€κ°λ³μλ‘ `Depends`λ₯Ό μ¬μ©ν©λλ€:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="13 18"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="15 20"
+ {!> ../../../docs_src/dependencies/tutorial001_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="16 21"
+ {!> ../../../docs_src/dependencies/tutorial001_an.py!}
+ ```
+
+=== "Python 3.10+ Annotatedκ° μλ κ²½μ°"
+
+ !!! ν
+ κ°λ₯νλ€λ©΄ `Annotated`κ° λ¬λ¦° λ²μ μ κΆμ₯ν©λλ€.
+
+ ```Python hl_lines="11 16"
+ {!> ../../../docs_src/dependencies/tutorial001_py310.py!}
+ ```
+
+=== "Python 3.8+ Annotatedκ° μλ κ²½μ°"
+
+ !!! ν
+ κ°λ₯νλ€λ©΄ `Annotated`κ° λ¬λ¦° λ²μ μ κΆμ₯ν©λλ€.
+
+ ```Python hl_lines="15 20"
+ {!> ../../../docs_src/dependencies/tutorial001.py!}
+ ```
+
+λΉλ‘ `Body`, `Query` λ±μ μ¬μ©νλ κ²κ³Ό κ°μ λ°©μμΌλ‘ μ¬λ¬λΆμ ν¨μμ λ§€κ°λ³μμ μλ `Depends`λ₯Ό μ¬μ©νμ§λ§, `Depends`λ μ½κ° λ€λ₯΄κ² μλν©λλ€.
+
+`Depends`μ λ¨μΌ λ§€κ°λ³μλ§ μ λ¬νμ΅λλ€.
+
+μ΄ λ§€κ°λ³μλ ν¨μκ°μ κ²μ΄μ΄μΌ ν©λλ€.
+
+μ¬λ¬λΆμ μ§μ **νΈμΆνμ§ μμμ΅λλ€** (λμ κ΄νΈλ₯Ό μΉμ§ μμμ΅λλ€), λ¨μ§ `Depends()`μ λ§€κ°λ³μλ‘ λ겨 쀬μ λΏμ
λλ€.
+
+κ·Έλ¦¬κ³ κ·Έ ν¨μλ *κ²½λ‘ μλ ν¨μ*κ° μλνλ κ²κ³Ό κ°μ λ°©μμΌλ‘ λ§€κ°λ³μλ₯Ό λ°μ΅λλ€.
+
+!!! ν
+ μ¬λ¬λΆμ λ€μ μ₯μμ ν¨μλ₯Ό μ μΈνκ³ μ, "λ€λ₯Έ κ²λ€"μ΄ μ΄λ»κ² μμ‘΄μ±μΌλ‘ μ¬μ©λλμ§ μκ² λ κ²μ
λλ€.
+
+μλ‘μ΄ μμ²μ΄ λμ°©ν λλ§λ€, **FastAPI**λ λ€μμ μ²λ¦¬ν©λλ€:
+
+* μ¬λ°λ₯Έ λ§€κ°λ³μλ₯Ό κ°μ§ μμ‘΄μ±("λνλλΈ") ν¨μλ₯Ό νΈμΆν©λλ€.
+* ν¨μμμ κ²°κ³Όλ₯Ό λ°μμ΅λλ€.
+* *κ²½λ‘ μλ ν¨μ*μ μλ λ§€κ°λ³μμ κ·Έ κ²°κ³Όλ₯Ό ν λΉν©λλ€
+
+```mermaid
+graph TB
+
+common_parameters(["common_parameters"])
+read_items["/items/"]
+read_users["/users/"]
+
+common_parameters --> read_items
+common_parameters --> read_users
+```
+
+μ΄λ κ² νλ©΄ κ³΅μ© μ½λλ₯Ό νλ²λ§ μ μ΄λ λλ©°, **FastAPI**λ *κ²½λ‘ μλ*μ μν΄ μ΄μ λν νΈμΆμ μ²λ¦¬ν©λλ€.
+
+!!! νμΈ
+ νΉλ³ν ν΄λμ€λ₯Ό λ§λ€μ§ μμλ λλ©°, μ΄λ¬ν κ² νΉμ λΉμ·ν μ’
λ₯λ₯Ό **FastAPI**μ "λ±λ‘"νκΈ° μν΄ μ΄λ€ κ³³μ λκ²¨μ£Όμ§ μμλ λ©λλ€.
+
+ λ¨μν `Depends`μ λκ²¨μ£ΌκΈ°λ§ νλ©΄ λλ©°, **FastAPI**λ λλ¨Έμ§λ₯Ό μ΄μ°ν μ§ μκ³ μμ΅λλ€.
+
+## `Annotated`μΈ μμ‘΄μ± κ³΅μ νκΈ°
+
+μμ μμ μμ λͺλͺ μμ **μ½λ μ€λ³΅**μ΄ μλ€λ κ²μ 보μμ κ²λλ€.
+
+`common_parameters()`μμ‘΄μ μ¬μ©ν΄μΌ νλ€λ©΄, νμ
λͺ
μμ `Depends()`μ ν¨κ» μ 체 λ§€κ°λ³μλ₯Ό μ μ΄μΌ ν©λλ€:
+
+```Python
+commons: Annotated[dict, Depends(common_parameters)]
+```
+
+νμ§λ§ `Annotated`λ₯Ό μ¬μ©νκ³ μκΈ°μ, `Annotated` κ°μ λ³μμ μ μ₯νκ³ μ¬λ¬ μ₯μμμ μ¬μ©ν μ μμ΅λλ€:
+
+=== "Python 3.10+"
+
+ ```Python hl_lines="12 16 21"
+ {!> ../../../docs_src/dependencies/tutorial001_02_an_py310.py!}
+ ```
+
+=== "Python 3.9+"
+
+ ```Python hl_lines="14 18 23"
+ {!> ../../../docs_src/dependencies/tutorial001_02_an_py39.py!}
+ ```
+
+=== "Python 3.8+"
+
+ ```Python hl_lines="15 19 24"
+ {!> ../../../docs_src/dependencies/tutorial001_02_an.py!}
+ ```
+
+!!! ν
+ μ΄λ κ·Έμ νμ€ νμ΄μ¬μ΄κ³ "type alias"λΌκ³ λΆλ₯΄λ©° μ¬μ€ **FastAPI**μ κ΅νλλ κ²μ μλλλ€.
+
+ νμ§λ§, `Annotated`λ₯Ό ν¬ν¨νμ¬, **FastAPI**κ° νμ΄μ¬ νμ€μ κΈ°λ°μΌλ‘ νκ³ μκΈ°μ, μ΄λ₯Ό μ¬λ¬λΆμ μ½λ νΈλ¦μΌλ‘ μ¬μ©ν μ μμ΅λλ€. π
+
+μ΄ μμ‘΄μ±μ κ³μν΄μ μμνλλ‘ μλν κ²μ΄λ©°, **μ μΌ μ’μ λΆλΆ**μ **νμ
μ λ³΄κ° λ³΄μ‘΄λλ€λ κ²μ
λλ€**. μ¦ μ¬λ¬λΆμ νΈμ§κΈ°κ° **μλ μμ±**, **μΈλΌμΈ μλ¬** λ±μ κ³μν΄μ μ 곡ν μ μλ€λ κ²μ
λλ€. `mypy`κ°μ λ€λ₯Έ λꡬλ λ§μ°¬κ°μ§μ
λλ€.
+
+μ΄λ νΉν **λ§μ *κ²½λ‘ μλ***μμ **κ°μ μμ‘΄μ±**μ κ³μν΄μ μ¬μ©νλ **κ±°λ μ½λ κΈ°λ°**μμμ μ¬μ©νλ©΄ μ μ©ν κ²μ
λλ€.
+
+## `async`νκ², νΉμ `async`νμ§ μκ²
+
+μμ‘΄μ±μ΄ (*κ²½λ‘ μλ ν¨μ*μμ μ²λΌ λκ°μ΄) **FastAPI**μ μν΄ νΈμΆλ μ μμΌλ©°, ν¨μλ₯Ό μ μν λ λμΌν κ·μΉμ΄ μ μ©λ©λλ€.
+
+`async def`μ μ¬μ©νκ±°λ νΉμ μΌλ°μ μΈ `def`λ₯Ό μ¬μ©ν μ μμ΅λλ€.
+
+κ·Έλ¦¬κ³ μΌλ°μ μΈ `def` *κ²½λ‘ μλ ν¨μ* μμ `async def`λ‘ μμ‘΄μ±μ μ μΈν μ μμΌλ©°, `async def` *κ²½λ‘ μλ ν¨μ* μμ `def`λ‘ μμ‘΄μ±μ μ μΈνλ λ±μ λ°©λ²μ΄ μμ΅λλ€.
+
+μ무 λ¬Έμ μμ΅λλ€. **FastAPI**λ 무μμ ν μ§ μκ³ μμ΅λλ€.
+
+!!! μ°Έκ³
+ μ λͺ¨λ₯΄μκ² λ€λ©΄, [Async: *"In a hurry?"*](../../async.md){.internal-link target=_blank} λ¬Έμμμ `async`μ `await`μ λν΄ νμΈν μ μμ΅λλ€.
+
+## OpenAPIμ ν΅ν©
+
+λͺ¨λ μμ² μ μΈ, κ²μ¦κ³Ό μμ‘΄μ±(λ° νμ μμ‘΄μ±)μ λν μꡬ μ¬νμ λμΌν OpenAPI μ€ν€λ§μ ν΅ν©λ©λλ€.
+
+λ°λΌμ λνν λ¬Έμμ μ΄λ¬ν μμ‘΄μ±μ λν λͺ¨λ μ 보 μμ ν¬ν¨νκ³ μμ΅λλ€:
+
+<img src="/img/tutorial/dependencies/image01.png">
+
+## κ°λ¨ν μ¬μ©λ²
+
+μ΄λ₯Ό 보면, *κ²½λ‘ μλ ν¨μ*λ *κ²½λ‘*μ *μλ*μ΄ λ§€μΉλλ©΄ μΈμ λ μ§ μ¬μ©λλλ‘ μ μλμμΌλ©°, **FastAPI**λ μ¬λ°λ₯Έ λ§€κ°λ³μλ₯Ό κ°μ§ ν¨μλ₯Ό νΈμΆνκ³ ν΄λΉ μμ²μμ λ°μ΄ν°λ₯Ό μΆμΆν©λλ€.
+
+μ¬μ€, λͺ¨λ (νΉμ λλΆλΆμ) μΉ νλ μμν¬λ μ΄μ κ°μ λ°©μμΌλ‘ μλν©λλ€.
+
+μ¬λ¬λΆμ μ΄λ¬ν ν¨μλ€μ μ λ μ§μ νΈμΆνμ§ μμ΅λλ€. νλ μμν¬(μ΄ κ²½μ° **FastAPI**)μ μν΄ νΈμΆλ©λλ€.
+
+μμ‘΄μ± μ£Όμ
μμ€ν
κ³Ό ν¨κ»λΌλ©΄ **FastAPI**μκ² μ¬λ¬λΆμ *κ²½λ‘ μλ ν¨μ*κ° μ€νλκΈ° μ μ μ€νλμ΄μΌ νλ 무μΈκ°μ μ¬λ¬λΆμ *κ²½λ‘ μλ ν¨μ* λν "μμ‘΄"νκ³ μμμ μ릴 μ μμΌλ©°, **FastAPI**λ μ΄λ₯Ό μ€ννκ³ κ²°κ³Όλ₯Ό "μ£Όμ
"ν κ²μ
λλ€.
+
+"μμ‘΄μ± μ£Όμ
"μ΄λΌλ λμΌν μμ΄λμ΄μ λν λ€λ₯Έ μΌλ°μ μΈ μ©μ΄λ λ€μκ³Ό κ°μ΅λλ€:
+
+* 리μμ€
+* μ 곡μ
+* μλΉμ€
+* μΈμ ν°λΈ
+* μ»΄ν¬λνΈ
+
+## **FastAPI** νλ¬κ·ΈμΈ
+
+ν΅ν©κ³Ό "νλ¬κ·ΈμΈ"μ **μμ‘΄μ± μ£Όμ
** μμ€ν
μ μ¬μ©νμ¬ κ΅¬μΆν μ μμ΅λλ€. νμ§λ§ μ€μ λ‘ **"νλ¬κ·ΈμΈ"μ λ§λ€ νμλ μμ΅λλ€**, μλνλ©΄ μμ‘΄μ±μ μ¬μ©ν¨μΌλ‘μ¨ μ¬λ¬λΆμ *κ²½λ‘ μλ ν¨μ*μ ν΅ν©κ³Ό μνΈ μμ©μ 무νλλ‘ μ μΈν μ μκΈ° λλ¬Έμ
λλ€.
+
+κ·Έλ¦¬κ³ "λ§ κ·Έλλ‘", κ·Έμ νμλ‘ νλ νμ΄μ¬ ν¨ν€μ§λ₯Ό μν¬νΈνκ³ λ¨ λͺ μ€μ μ½λλ‘ μ¬λ¬λΆμ API ν¨μμ ν΅ν©ν¨μΌλ‘μ¨, μμ‘΄μ±μ μμ£Ό κ°λ¨νκ³ μ§κ΄μ μΈ λ°©λ²μΌλ‘ λ§λ€ μ μμ΅λλ€.
+
+κ΄κ³ν λ° NoSQL λ°μ΄ν°λ² μ΄μ€, 보μ λ±, μ΄μ λν μμλ₯Ό λ€μ μ₯μμ λ³Ό μ μμ΅λλ€.
+
+## **FastAPI** νΈνμ±
+
+μμ‘΄μ± μ£Όμ
μμ€ν
μ λ¨μν¨μ **FastAPI**λ₯Ό λ€μκ³Ό κ°μ μμλ€κ³Ό νΈνν μ μκ² ν©λλ€:
+
+* λͺ¨λ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€
+* NoSQL λ°μ΄ν°λ² μ΄μ€
+* μΈλΆ ν¨ν€μ§
+* μΈλΆ API
+* μΈμ¦ λ° κΆν λΆμ¬ μμ€ν
+* API μ¬μ© λͺ¨λν°λ§ μμ€ν
+* μλ΅ λ°μ΄ν° μ£Όμ
μμ€ν
+* κΈ°ν λ±λ±.
+
+## κ°νΈνκ³ κ°λ ₯νλ€
+
+κ³μΈ΅μ μΈ μμ‘΄μ± μ£Όμ
μμ€ν
μ μ μνκ³ μ¬μ©νκΈ° μ½μ§λ§, μ¬μ ν λ§€μ° κ°λ ₯ν©λλ€.
+
+μ¬λ¬λΆμ μ€μ€λ‘λ₯Ό μμ‘΄νλ μμ‘΄μ±μ μ μν μ μμ΅λλ€.
+
+λμλ, κ³μΈ΅μ μΈ λλ¬΄λ‘ λ μμ‘΄μ±μ΄ λ§λ€μ΄μ§λ©°, κ·Έλ¦¬κ³ **μμ‘΄μ± μ£Όμ
** μμ€ν
μ (νμ μμ‘΄μ±λ λ§μ°¬κ°μ§λ‘) μ΄λ¬ν μμ‘΄μ±λ€μ μ²λ¦¬νκ³ κ° λ¨κ³λ§λ€ κ²°κ³Όλ₯Ό μ 곡ν©λλ€(μ£Όμ
ν©λλ€).
+
+μλ₯Ό λ€λ©΄, μ¬λ¬λΆμ΄ 4κ°μ API μλν¬μΈνΈ(*κ²½λ‘ μλ*)λ₯Ό κ°μ§κ³ μλ€κ³ ν΄λ΄
μλ€:
+
+* `/items/public/`
+* `/items/private/`
+* `/users/{user_id}/activate`
+* `/items/pro/`
+
+κ·Έ λ€μ κ°κ°μ λν΄ κ·Έμ μμ‘΄μ±κ³Ό νμ μμ‘΄μ±μ μ¬μ©νμ¬ λ€λ₯Έ κΆν μꡬ μ¬νμ μΆκ°ν μ μμ κ²λλ€:
+
+```mermaid
+graph TB
+
+current_user(["current_user"])
+active_user(["active_user"])
+admin_user(["admin_user"])
+paying_user(["paying_user"])
+
+public["/items/public/"]
+private["/items/private/"]
+activate_user["/users/{user_id}/activate"]
+pro_items["/items/pro/"]
+
+current_user --> active_user
+active_user --> admin_user
+active_user --> paying_user
+
+current_user --> public
+active_user --> private
+admin_user --> activate_user
+paying_user --> pro_items
+```
+
+## **OpenAPI**μμ ν΅ν©
+
+μ΄ λͺ¨λ μμ‘΄μ±μ κ°κ°μ μꡬμ¬νμ μ μΈνλ λμμ, *κ²½λ‘ μλ*μ λ§€κ°λ³μ, κ²μ¦ λ±μ μΆκ°ν©λλ€.
+
+**FastAPI**λ μ΄ λͺ¨λ κ²μ OpenAPI μ€ν€λ§μ μΆκ°ν κ²μ΄λ©°, μ΄λ₯Ό ν΅ν΄ λνν λ¬Έμ μμ€ν
μ λνλ κ²μ
λλ€.