<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의 μ˜μ‘΄μ„± 캐싱 λ©”μ»€λ‹ˆμ¦˜μ— λŒ€ν•΄μ„œλ„ μ•Œμ•„λ΄…λ‹ˆλ‹€.


🎯 챕터 λͺ©ν‘œ

이 κ°•μ˜λ₯Ό 마치면 μ—¬λŸ¬λΆ„μ€ λ‹€μŒμ„ ν•  수 있게 λ©λ‹ˆλ‹€:

  1. **μ˜μ‘΄μ„± μ£Όμž…(Dependency Injection, DI)**의 κΈ°λ³Έ κ°œλ…κ³Ό μž₯점(μ½”λ“œ μž¬μ‚¬μš©μ„±, 관심사 뢄리, ν…ŒμŠ€νŠΈ μš©μ΄μ„±)을 μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. FastAPI의 Depends ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 경둜 μž‘λ™ ν•¨μˆ˜μ— μ˜μ‘΄μ„±μ„ μ„ μ–Έν•˜κ³  μ£Όμž…λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. μž¬μ‚¬μš© κ°€λŠ₯ν•œ λ‘œμ§μ„ 담은 **μ˜μ‘΄μ„± ν•¨μˆ˜(Dependable)**λ₯Ό μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  4. ν•˜λ‚˜μ˜ μ˜μ‘΄μ„±μ΄ λ‹€λ₯Έ μ˜μ‘΄μ„±μ„ μ‚¬μš©ν•˜λŠ” ν•˜μœ„ μ˜μ‘΄μ„±(Sub-dependency) ꡬ쑰λ₯Ό μ΄ν•΄ν•˜κ³  κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  5. 단일 μš”μ²­ λ‚΄μ—μ„œ FastAPI의 μ˜μ‘΄μ„± 캐싱이 μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€ μ΄ν•΄ν•©λ‹ˆλ‹€.
  6. μ˜μ‘΄μ„± μ£Όμž…μ΄ ν•„μš”ν•œ 일반적인 μ‹œλ‚˜λ¦¬μ˜€(λ°μ΄ν„°λ² μ΄μŠ€ μ„Έμ…˜, 인증, 곡톡 νŒŒλΌλ―Έν„° λ“±)λ₯Ό μΈμ§€ν•©λ‹ˆλ‹€.