<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 μΈμ μλ΅ νμμ λ³΄λ€ μ½κ³ μ μ°νκ² μ²λ¦¬νλ κΈ°λ²μ μ΅νλλ€.
μ΄ κ°μλ₯Ό λ§μΉλ©΄ μ¬λ¬λΆμ λ€μμ ν μ μκ² λ©λλ€:
fastapi.responses
λͺ¨λμμ HTMLResponse
, PlainTextResponse
, RedirectResponse
λ± λ€μν Response
ν΄λμ€λ₯Ό κ°μ Έμ μ¬μ©ν μ μμ΅λλ€.Response
κ°μ²΄λ₯Ό μμ±νκ³ λ°ννμ¬ μλ΅ λ΄μ©κ³Ό νμμ μ μ΄ν μ μμ΅λλ€.response_class
λ§€κ°λ³μλ₯Ό μ¬μ©νμ¬ νΉμ κ²½λ‘μ κΈ°λ³Έ μλ΅ ν΄λμ€λ₯Ό μ§μ ν μ μμ΅λλ€.StreamingResponse
, FileResponse
λ± λ€λ₯Έ μ’
λ₯μ μλ΅ ν΄λμ€κ° μλ€λ κ²μ μΈμ§ν©λλ€. (μμΈν λ΄μ©μ μΆν κ°μ)