<aside>

</aside>

μ•ˆλ…•ν•˜μ„Έμš”! λ“œλ””μ–΄ FastAPI κ°•μ˜ 2λΆ€: 응닡 처리 μ‹¬ν™”μ˜ 첫 μ‹œκ°„, 10κ°•μž…λ‹ˆλ‹€! πŸ₯³

1λΆ€μ—μ„œλŠ” FastAPI의 기본적인 μ„€μΉ˜λΆ€ν„° μ‹œμž‘ν•΄μ„œ λΌμš°νŒ…, μš”μ²­ 데이터 처리(경둜/쿼리 λ§€κ°œλ³€μˆ˜, μš”μ²­ λ³Έλ¬Έ), Pydantic을 μ΄μš©ν•œ 데이터 검증, μ˜μ‘΄μ„± μ£Όμž…, 미듀웨어, CORS, μ˜ˆμ™Έ μ²˜λ¦¬κΉŒμ§€ 정말 λ§Žμ€ 핡심 κ°œλ…λ“€μ„ λ°°μ› μŠ΅λ‹ˆλ‹€. μ—¬λŸ¬λΆ„ 정말 λŒ€λ‹¨ν•΄μš”! πŸ‘

이제 2λΆ€μ—μ„œλŠ” API의 또 λ‹€λ₯Έ μ€‘μš”ν•œ 좕인 **응닡(Response)**을 λ”μš± μ„Έλ°€ν•˜κ²Œ 닀루고 μ œμ–΄ν•˜λŠ” 방법을 배울 κ±°μ˜ˆμš”. ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μ–΄λ–€ 데이터λ₯Ό, μ–΄λ–€ ν˜•μ‹μœΌλ‘œ, μ–΄λ–€ μƒνƒœ μ½”λ“œλ‘œ 전달할지 자유자재둜 μ‘°μ ˆν•˜λŠ” κΈ°μˆ μ„ μ΅ν˜€λ΄…μ‹œλ‹€!

κ·Έ 첫걸음으둜, 이번 10κ°•μ—μ„œλŠ” FastAPIκ°€ 기본적으둜 μ–΄λ–»κ²Œ 응닡을 μ²˜λ¦¬ν•˜λŠ”μ§€(특히 JSON 응닡) λ³΅μŠ΅ν•˜κ³ , response_model μ΄λΌλŠ” κ°•λ ₯ν•œ 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ API의 좜λ ₯ 데이터 ꡬ쑰(μŠ€ν‚€λ§ˆ)λ₯Ό λͺ…ν™•νžˆ μ •μ˜ν•˜κ³ , μ›ν•˜λŠ” λ°μ΄ν„°λ§Œ μ„ νƒμ μœΌλ‘œ(ν•„ν„°λ§ν•˜μ—¬) λ°˜ν™˜ν•˜λŠ” 방법을 μ•Œμ•„λ΄…λ‹ˆλ‹€. 응닡 데이터λ₯Ό λ”μš± κΉ”λ”ν•˜κ³  μ•ˆμ „ν•˜κ²Œ κ΄€λ¦¬ν•˜λŠ” 비결을 λ°°μ›Œλ΄…μ‹œλ‹€! ✨


πŸ“š 챕터 μ†Œκ°œ

이번 10κ°•μ—μ„œλŠ” FastAPIκ°€ 경둜 μž‘λ™ ν•¨μˆ˜μ—μ„œ λ°˜ν™˜λœ 값을 μ²˜λ¦¬ν•˜λŠ” κΈ°λ³Έ λ©”μ»€λ‹ˆμ¦˜, 특히 μžλ™ JSON 응닡 λ³€ν™˜μ— λŒ€ν•΄ λ³΅μŠ΅ν•©λ‹ˆλ‹€. λ”•μ…”λ„ˆλ¦¬λ‚˜ 리슀트, Pydantic λͺ¨λΈ 등을 λ°˜ν™˜ν•˜λ©΄ FastAPIκ°€ μžλ™μœΌλ‘œ JSONResponse ν˜•νƒœλ‘œ λ§Œλ“€μ–΄μ£ΌλŠ” νŽΈλ¦¬ν•œ κΈ°λŠ₯이죠.

ν•˜μ§€λ§Œ λ•Œλ‘œλŠ” APIκ°€ λ°˜ν™˜ν•˜λŠ” λ°μ΄ν„°μ˜ ꡬ쑰λ₯Ό λͺ…ν™•ν•˜κ²Œ λ¬Έμ„œν™”ν•˜κ³  μ‹Άκ±°λ‚˜, λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” λͺ¨λ“  데이터λ₯Ό 외뢀에 λ…ΈμΆœν•˜μ§€ μ•Šκ³  νŠΉμ • ν•„λ“œλ§Œ μ„ νƒμ μœΌλ‘œ 보내고 싢을 λ•Œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이럴 λ•Œ μ‚¬μš©ν•˜λŠ” 것이 λ°”λ‘œ 경둜 μž‘λ™ λ°μ½”λ ˆμ΄ν„°μ˜ response_model λ§€κ°œλ³€μˆ˜μž…λ‹ˆλ‹€.

response_model에 Pydantic λͺ¨λΈμ„ μ§€μ •ν•˜λ©΄, FastAPIλŠ” 경둜 μž‘λ™ ν•¨μˆ˜κ°€ 값을 λ°˜ν™˜ν•œ 후에 ν•΄λ‹Ή λͺ¨λΈ μŠ€ν‚€λ§ˆμ— 맞좰 데이터λ₯Ό ν•„ν„°λ§ν•˜κ³  μ§λ ¬ν™”ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ―Όκ°ν•œ 정보(예: λΉ„λ°€λ²ˆν˜Έ)λ₯Ό μ‘λ‹΅μ—μ„œ μžλ™μœΌλ‘œ μ œμ™Έν•˜κ±°λ‚˜, API λ¬Έμ„œμ— μ •ν™•ν•œ 응닡 μŠ€ν‚€λ§ˆλ₯Ό λͺ…μ‹œν•˜λŠ” λ“±μ˜ 이점을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. 이 κ°•μ˜μ—μ„œλŠ” response_model의 μž‘λ™ 원리λ₯Ό μ΄ν•΄ν•˜κ³  이λ₯Ό ν™œμš©ν•˜μ—¬ 응닡 데이터λ₯Ό 효과적으둜 μ œμ–΄ν•˜λŠ” 방법을 μ‹€μŠ΅ν•©λ‹ˆλ‹€.


🎯 챕터 λͺ©ν‘œ

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

  1. FastAPIκ°€ Python dict, list, Pydantic λͺ¨λΈ 등을 μžλ™μœΌλ‘œ JSON μ‘λ‹΅μœΌλ‘œ λ³€ν™˜ν•˜λŠ” κΈ°λ³Έ λ™μž‘μ„ μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. 경둜 μž‘λ™ λ°μ½”λ ˆμ΄ν„°μ˜ response_model λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ API의 좜λ ₯ μŠ€ν‚€λ§ˆλ₯Ό Pydantic λͺ¨λΈλ‘œ λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. response_model을 ν™œμš©ν•˜μ—¬ 경둜 μž‘λ™ ν•¨μˆ˜κ°€ λ°˜ν™˜ν•˜λŠ” λ°μ΄ν„°μ—μ„œ **μ›ν•˜λŠ” ν•„λ“œλ§Œ 선택(필터링)**ν•˜μ—¬ 응닡에 ν¬ν•¨μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  4. response_model μ‚¬μš©μ΄ **API μžλ™ λ¬Έμ„œ(Swagger UI λ“±)**에 μ–΄λ–»κ²Œ λ°˜μ˜λ˜μ–΄ 응닡 ꡬ쑰λ₯Ό λͺ…ν™•νžˆ λ³΄μ—¬μ£ΌλŠ”μ§€ μ΄ν•΄ν•©λ‹ˆλ‹€.
  5. μš”μ²­ 본문을 μœ„ν•œ μž…λ ₯ λͺ¨λΈκ³Ό response_model을 μœ„ν•œ 좜λ ₯ λͺ¨λΈμ„ κ΅¬λΆ„ν•˜μ—¬ μ •μ˜ν•˜κ³  μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.