<aside>
</aside>
μλ νμΈμ! FastAPI 7κ°μ μ€μ κ²μ νμν©λλ€! π
μ§λ 6κ°μμλ Pydanticμ Field
μ 컀μ€ν
μ ν¨μ± κ²μ¬κΈ°(@field_validator
)λ₯Ό μ¬μ©νμ¬ λ°μ΄ν° κ²μ¦μ λμ± κ°λ ₯νκ² λ§λλ λ°©λ²μ λ°°μ μ΅λλ€. μ΄μ μ°λ¦¬ APIλ λ μ ννκ³ μ λ’°ν μ μλ λ°μ΄ν°λ§ μ²λ¦¬νκ² λμμ£ ! π
μ΄λ² μκ°μλ FastAPIμ λ§€μ° μ€μνκ³ κ°λ ₯ν κΈ°λ₯ μ€ νλμΈ μμ‘΄μ± μ£Όμ (Dependency Injection, DI) μμ€ν μ λν΄ λ°°μΈ μκ°μ λλ€. μ΄λ¦μ΄ μ‘°κΈ μ΄λ ΅κ² λ€λ¦΄ μλ μμ§λ§, μκ³ λ³΄λ©΄ μ½λλ₯Ό ν¨μ¬ κΉ¨λνκ³ , μ¬μ¬μ© κ°λ₯νλ©°, ν μ€νΈνκΈ° μ½κ² λ§λ€μ΄μ£Όλ μ λ§ λ©μ§ κ°λ μ΄μμ! β¨
μ¬λ¬ API μλν¬μΈνΈμμ λ°λ³΅λλ λ‘μ§(μ: μ¬μ©μ μΈμ¦, λ°μ΄ν°λ² μ΄μ€ μ°κ²°, κ³΅ν΅ νλΌλ―Έν° μ²λ¦¬ λ±)μ μ΄λ»κ² ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκ³ κ³΅μ ν μ μμκΉμ? κ·Έ ν΄λ΅μ΄ λ°λ‘ μμ‘΄μ± μ£Όμ μ μμ΅λλ€!
μ, μ½λμ ꡬ쑰λ₯Ό κ°μ νκ³ μ€λ³΅μ μ€μ΄λ λ§λ², μμ‘΄μ± μ£Όμ μ μΈκ³λ‘ ν¨κ» λ λλ³ΌκΉμ? π
μ΄λ² 7κ°μμλ FastAPIμ ν΅μ¬ κΈ°λ₯ μ€ νλμΈ μμ‘΄μ± μ£Όμ (Dependency Injection, DI) μμ€ν μ λ°°μ°κ³ νμ©νλ λ°©λ²μ μμλ΄ λλ€. μμ‘΄μ± μ£Όμ μ μ½λμ νΉμ λΆλΆ(μ: API κ²½λ‘ μλ ν¨μ)μ΄ νμλ‘ νλ λ€λ₯Έ μ½λ μ‘°κ°μ΄λ μμ(μ¦, "μμ‘΄μ±")μ μΈλΆμμ "μ£Όμ "ν΄μ£Όλ λμμΈ ν¨ν΄μ λλ€.
FastAPIμμλ Depends
λΌλ νΉλ³ν ν¨μλ₯Ό μ¬μ©νμ¬ μ΄ μμ‘΄μ± μ£Όμ
μ λ§€μ° μ½κ³ μ§κ΄μ μΌλ‘ ꡬνν μ μμ΅λλ€. Depends
λ₯Ό μ¬μ©νλ©΄ κ³΅ν΅ λ‘μ§ (μ: κ³΅ν΅ μΏΌλ¦¬ νλΌλ―Έν° μ²λ¦¬, μ¬μ©μ μΈμ¦ νμΈ, λ°μ΄ν°λ² μ΄μ€ μΈμ
κ΄λ¦¬ λ±)μ λ³λμ μμ‘΄μ± ν¨μλ‘ λΆλ¦¬νκ³ , νμν κ³³ μ΄λμμλ μ΄ ν¨μλ₯Ό μ¬μ¬μ©ν μ μμ΅λλ€.
μ΄ κ°μλ₯Ό ν΅ν΄ μμ‘΄μ± μ£Όμ
μ κ°λ
μ μ΄ν΄νκ³ , Depends
λ₯Ό μ¬μ©νμ¬ μ½λλ₯Ό λͺ¨λννκ³ μ¬μ¬μ©μ±μ λμ΄λ λ°©λ²μ μ€μ΅ν©λλ€. λν, μμ‘΄μ±μ΄ λ€λ₯Έ μμ‘΄μ±μ κ°μ§λ νμ μμ‘΄μ±(Sub-dependency) ꡬ쑰μ FastAPIμ μμ‘΄μ± μΊμ± λ©μ»€λμ¦μ λν΄μλ μμλ΄
λλ€.
μ΄ κ°μλ₯Ό λ§μΉλ©΄ μ¬λ¬λΆμ λ€μμ ν μ μκ² λ©λλ€:
Depends
ν¨μλ₯Ό μ¬μ©νμ¬ κ²½λ‘ μλ ν¨μμ μμ‘΄μ±μ μ μΈνκ³ μ£Όμ
λ°μ μ μμ΅λλ€.