<aside>
</aside>
μλ νμΈμ! FastAPI 6κ°μ μ€μ κ²μ νμν©λλ€! π€
μ§λ 5κ°μμλ ν΄λΌμ΄μΈνΈλ‘λΆν° 볡μ‘ν λ°μ΄ν°λ₯Ό λ°λ μμ² λ³Έλ¬Έκ³Ό, κ·Έ λ°μ΄ν°μ ꡬ쑰λ₯Ό μ μνλ Pydantic λͺ¨λΈμ λν΄ λ°°μ μ΅λλ€. Pydantic λͺ¨λΈ λλΆμ λ°μ΄ν°μ κΈ°λ³Έ νμ (λ¬Έμμ΄, μ«μ λ±)κ³Ό νμ μ¬λΆλ₯Ό μλμΌλ‘ κ²μ¦ν μ μμμ£ !
νμ§λ§ μ€μ μ ν리μΌμ΄μ μμλ μ΄κ²λ§μΌλ‘λ λΆμ‘±ν λκ° λ§μ΅λλ€. μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ μ’ λ ꡬ체μ μΈ κ·μΉμ΄ νμν μ μμ΄μ:
price
)μ νμ 0λ³΄λ€ μ»€μΌ νλ€.username
)μ μ΅μ 3μ μ΄μμ΄μ΄μΌ νλ€.email
)λ μ¬λ°λ₯Έ νμμ΄μ΄μΌ νλ€.password
)λ νΉμ 볡μ‘λ κ·μΉμ λ§μ‘±ν΄μΌ νλ€.μ΄λ² μκ°μλ Pydanticμ λ κ°λ ₯ν μ ν¨μ± κ²μ¬ κΈ°λ₯λ€μ νμ©νμ¬, μ΄λ κ² μΈλ°νκ³ λ³΅μ‘ν λ°μ΄ν° κ·μΉκΉμ§ μ μ©νλ λ°©λ²μ λ°°μλλ€! Pydanticμ Field
ν¨μμ 컀μ€ν
μ ν¨μ± κ²μ¬κΈ°(@field_validator
)λ₯Ό μ¬μ©νμ¬ μ°λ¦¬ APIλ‘ λ€μ΄μ€λ λ°μ΄ν°μ μ λ’°μ±κ³Ό μμ μ±μ ν λ¨κ³ λ λμ΄μ¬λ € λ΄
μλ€! π‘οΈ
μ΄λ² 6κ°μμλ Pydanticμ μ¬μ©ν λ°μ΄ν° μ ν¨μ± κ²μ¬λ₯Ό ν λ¨κ³ λ κΉμ΄ μμλ΄ λλ€. λ¨μν νμ κ²μ¬λ₯Ό λμ΄μ, λ°μ΄ν°μ λν ꡬ체μ μΈ μ μ½ μ‘°κ±΄μ μ€μ νλ λ°©λ²μ λ°°μλλ€.
Pydanticμ Field
ν¨μλ₯Ό μ¬μ©νμ¬ νλμ μΆκ°μ μΈ κ²μ¦ κ·μΉ (μ: κ°μ λ²μ, λ¬Έμμ΄ κΈΈμ΄, μ κ·μ ν¨ν΄)μ μμ½κ² μ μ©νλ λ°©λ²μ μ€μ΅ν©λλ€. λν, λ΄μ₯λ κ²μ¦ κ·μΉλ§μΌλ‘λ λΆμ‘±ν 볡μ‘ν κ²μ¦ λ‘μ§μ ꡬνν΄μΌ ν λ, @field_validator
λ°μ½λ μ΄ν°λ₯Ό μ¬μ©νμ¬ **컀μ€ν
μ ν¨μ± κ²μ¬κΈ°(Custom Validator)**λ₯Ό μ§μ λ§λλ λ°©λ²λ μμλ΄
λλ€.
μ΄λ¬ν μ¬νλ μ ν¨μ± κ²μ¬λ₯Ό ν΅ν΄ μλͺ»λ λ°μ΄ν°κ° μ ν리μΌμ΄μ λ‘μ§μΌλ‘ μ μ λλ κ²μ λμ± ν¨κ³Όμ μΌλ‘ λ°©μ§νκ³ , FastAPIκ° μ΄λ»κ² μλμΌλ‘ μμΈν 422 μ€λ₯ μλ΅μ μμ±νμ¬ APIμ μμ μ±μ λμ΄λμ§ νμΈνκ² λ κ²μ λλ€.
μ΄ κ°μλ₯Ό λ§μΉλ©΄ μ¬λ¬λΆμ λ€μμ ν μ μκ² λ©λλ€:
Field
ν¨μλ₯Ό μ¬μ©νμ¬ λͺ¨λΈ νλμ λ€μν λ΄μ₯ μ μ½ μ‘°κ±΄(μ«μ λ²μ, λ¬Έμμ΄ κΈΈμ΄, ν¨ν΄ λ±)μ μ μ©ν μ μμ΅λλ€.@field_validator
λ°μ½λ μ΄ν°λ₯Ό μ¬μ©νμ¬ μ»€μ€ν
μ ν¨μ± κ²μ¬ λ‘μ§μ ꡬνν μ μμ΅λλ€.