<aside>

</aside>

μ•ˆλ…•ν•˜μ„Έμš”! FastAPI κ°•μ˜ 2λΆ€μ˜ 두 번째 μ‹œκ°„, 11강에 μ˜€μ‹  것을 ν™˜μ˜ν•©λ‹ˆλ‹€! πŸŽ‰

μ§€λ‚œ 10κ°•μ—μ„œλŠ” response_model을 μ‚¬μš©ν•˜μ—¬ API μ‘λ‹΅μ˜ μŠ€ν‚€λ§ˆλ₯Ό μ •μ˜ν•˜κ³  JSON 데이터λ₯Ό ν•„ν„°λ§ν•˜λŠ” 방법을 λ°°μ› μŠ΅λ‹ˆλ‹€. API 응닡을 더 κΉ”λ”ν•˜κ³  예츑 κ°€λŠ₯ν•˜κ²Œ λ§Œλ“€ 수 μžˆμ—ˆμ£ ! πŸ‘

ν•˜μ§€λ§Œ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 항상 JSON λ°μ΄ν„°λ§Œ μ‘λ‹΅ν•˜λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€. λ•Œλ‘œλŠ” μ›Ή λΈŒλΌμš°μ €μ— 직접 보여쀄 HTML νŽ˜μ΄μ§€λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•  μˆ˜λ„ 있고, κ°„λ‹¨ν•œ ν…μŠ€νŠΈ λ©”μ‹œμ§€λ§Œ 보내야 ν•  μˆ˜λ„ 있으며, μ‚¬μš©μžλ₯Ό **λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ 이동(λ¦¬λ””λ ‰μ…˜)**μ‹œμΌœμ•Ό ν•  λ•Œλ„ μžˆμŠ΅λ‹ˆλ‹€.

이번 μ‹œκ°„μ—λŠ” FastAPIκ°€ μ œκ³΅ν•˜λŠ” λ‹€μ–‘ν•œ Response ν΄λž˜μŠ€λ“€μ„ μ‚¬μš©ν•˜μ—¬, μ΄λ ‡κ²Œ JSON μ΄μ™Έμ˜ λ‹€μ–‘ν•œ ν˜•μ‹μ˜ 응닡을 μ–΄λ–»κ²Œ μƒμ„±ν•˜κ³  λ°˜ν™˜ν•˜λŠ”μ§€ μ•Œμ•„λ³Ό κ±°μ˜ˆμš”. API μ‘λ‹΅μ˜ ν‘œν˜„λ ₯을 ν•œμΈ΅ 더 λ†’μ—¬λ΄…μ‹œλ‹€! 🎨


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

이번 11κ°•μ—μ„œλŠ” FastAPI의 기본적인 JSON 응닡 λ©”μ»€λ‹ˆμ¦˜μ„ λ„˜μ–΄μ„œ, HTML, 일반 ν…μŠ€νŠΈ(Plain Text), λ¦¬λ””λ ‰μ…˜(Redirect) λ“± λ‹€μ–‘ν•œ μ’…λ₯˜μ˜ HTTP 응닡을 직접 μƒμ„±ν•˜κ³  λ°˜ν™˜ν•˜λŠ” 방법을 λ°°μ›λ‹ˆλ‹€.

FastAPIλŠ” Starlette ν”„λ ˆμž„μ›Œν¬λ₯Ό 기반으둜 ν•˜λ©°, Starlette이 μ œκ³΅ν•˜λŠ” μ—¬λŸ¬ νŽΈλ¦¬ν•œ Response μ„œλΈŒν΄λž˜μŠ€λ“€μ„ κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. HTMLResponse, PlainTextResponse, RedirectResponse λ“±μ˜ 클래슀λ₯Ό fastapi.responses λͺ¨λ“ˆμ—μ„œ 가져와 μ‚¬μš©ν•˜λŠ” 방법을 μ‹€μŠ΅ν•©λ‹ˆλ‹€.

경둜 μž‘λ™ ν•¨μˆ˜μ—μ„œ μ΄λŸ¬ν•œ Response 객체λ₯Ό 직접 μƒμ„±ν•˜μ—¬ λ°˜ν™˜ν•¨μœΌλ‘œμ¨, μ‘λ‹΅μ˜ λ‚΄μš©(content), μƒνƒœ μ½”λ“œ(status code), λ―Έλ””μ–΄ νƒ€μž…(media type, 예: text/html, text/plain), 헀더(headers) 등을 μ™„μ „νžˆ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, λ°μ½”λ ˆμ΄ν„°μ˜ response_class λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • κ²½λ‘œμ— λŒ€ν•œ κΈ°λ³Έ 응닡 클래슀λ₯Ό μ§€μ •ν•˜λŠ” 방법도 μ•Œμ•„λ΄…λ‹ˆλ‹€. 이λ₯Ό 톡해 JSON μ™Έμ˜ 응닡 ν˜•μ‹μ„ 보닀 쉽고 μœ μ—°ν•˜κ²Œ μ²˜λ¦¬ν•˜λŠ” 기법을 μ΅νž™λ‹ˆλ‹€.


🎯 챕터 λͺ©ν‘œ

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

  1. API 응닡이 JSON 외에도 λ‹€μ–‘ν•œ ν˜•μ‹(HTML, Plain Text λ“±)을 κ°€μ§ˆ 수 μžˆμŒμ„ μ΄ν•΄ν•©λ‹ˆλ‹€.
  2. fastapi.responses λͺ¨λ“ˆμ—μ„œ HTMLResponse, PlainTextResponse, RedirectResponse λ“± λ‹€μ–‘ν•œ Response 클래슀λ₯Ό 가져와 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. 경둜 μž‘λ™ ν•¨μˆ˜μ—μ„œ λͺ…μ‹œμ μœΌλ‘œ Response 객체λ₯Ό μƒμ„±ν•˜κ³  λ°˜ν™˜ν•˜μ—¬ 응닡 λ‚΄μš©κ³Ό ν˜•μ‹μ„ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  4. 경둜 μž‘λ™ λ°μ½”λ ˆμ΄ν„°μ˜ response_class λ§€κ°œλ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • 경둜의 κΈ°λ³Έ 응닡 클래슀λ₯Ό μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  5. StreamingResponse, FileResponse λ“± λ‹€λ₯Έ μ’…λ₯˜μ˜ 응닡 ν΄λž˜μŠ€κ°€ μžˆλ‹€λŠ” 것을 μΈμ§€ν•©λ‹ˆλ‹€. (μžμ„Έν•œ λ‚΄μš©μ€ μΆ”ν›„ κ°•μ˜)

πŸ—οΈ 이번 κ°•μ˜μ—μ„œ λ§Œλ“€ ν”„λ‘œμ νŠΈ ꡬ쑰 및 전체 μ½”λ“œ