<aside>
</aside>
μλ νμΈμ! λλμ΄ FastAPI κ°μ 3λΆ: νμΌ μ λ‘λ λ° λ€μ΄λ‘λμ μμ, 14κ°μ λλ€! π₯³
1λΆμ 2λΆμμλ APIμ κΈ°λ³Έμ μΈ κ΅¬μ‘°, μμ² μ²λ¦¬, μλ΅ μμ±, λ°μ΄ν° κ²μ¦, μμ‘΄μ± μ£Όμ , λ―Έλ€μ¨μ΄, CORS, μμΈ μ²λ¦¬, μν μ½λ μ μ΄ λ± μΉ APIμ ν΅μ¬μ μΈ κΈ°λ₯λ€μ νννκ² λ€μ‘μ΅λλ€. μ λ§ λ§μ κ²μ λ°°μ°μ ¨μ΄μ! π
μ΄μ 3λΆμμλ μΉ μλΉμ€μμ λΉΌλμ μ μλ νμΌ μ²λ¦¬μ λν΄ μ§μ€μ μΌλ‘ μμλ΄ λλ€. μ¬μ©μκ° νλ‘ν μ¬μ§μ μ¬λ¦¬κ±°λ, λ¬Έμ νμΌμ 첨λΆνκ±°λ, μλ²μμ μμ±λ λ³΄κ³ μ νμΌμ λ€μ΄λ‘λνλ λ±μ κΈ°λ₯μ μ΄λ»κ² ꡬνν μ μμκΉμ?
μ΄λ² 14κ°μμλ κ·Έ 첫걸μμΌλ‘, ν΄λΌμ΄μΈνΈκ° μλ²λ‘ νμΌμ μ λ‘λνλ κ²μ FastAPIμμ μ΄λ»κ² μ²λ¦¬νλμ§ λ°°μλλ€. μ΄λ―Έμ§, λ¬Έμ, λμμ λ± λ€μν μ’ λ₯μ νμΌμ μμ νκ³ ν¨μ¨μ μΌλ‘ λ°λ λ°©λ²μ μμλ³Ό κ±°μμ! πΌοΈπβ¬οΈ
νμΌκ³Ό ν¨κ»νλ APIμ μΈκ³λ‘ λ λλ³Ό μ€λΉ, λμ ¨λμ?
μ΄λ² 14κ°μμλ ν΄λΌμ΄μΈνΈ(μ£Όλ‘ μΉ λΈλΌμ°μ μ <form>
νκ·Έλ JavaScript Workspace
API)λ‘λΆν° μλ²λ‘ νμΌμ μ μ‘λ°λ νμΌ μ
λ‘λ κΈ°λ₯μ FastAPIμμ ꡬννλ λ°©λ²μ λ°°μλλ€.
HTTPλ₯Ό ν΅ν΄ νμΌμ μ
λ‘λν λλ μ£Όλ‘ multipart/form-data
μΈμ½λ© νμ
μ΄ μ¬μ©λλλ°, FastAPIλ μ΄ νμμ μ½κ² μ²λ¦¬ν μ μλλ‘ μ§μν©λλ€. λ€λ§, μ΄λ₯Ό μν΄μλ python-multipart
λΌμ΄λΈλ¬λ¦¬λ₯Ό λ¨Όμ μ€μΉν΄μΌ ν©λλ€.
FastAPIμμλ κ²½λ‘ μλ ν¨μμ νλΌλ―Έν° νμ
ννΈλ‘ bytes
λλ UploadFile
μ μ¬μ©νμ¬ μ
λ‘λλ νμΌμ λ°μ μ μμ΅λλ€. bytes
λ νμΌ μ 체 λ΄μ©μ λ©λͺ¨λ¦¬μ λ‘λνλ―λ‘ μμ νμΌμλ§ μ ν©νλ©°, λλΆλΆμ κ²½μ°μλ UploadFile
νμ
μ μ¬μ©νλ κ²μ΄ κΆμ₯λ©λλ€. UploadFile
μ λ©λͺ¨λ¦¬μ λμ€ν¬λ₯Ό ν¨μ¨μ μΌλ‘ μ¬μ©νλ μ€νλ§(spooling) λ°©μμ μ¬μ©νκ³ λΉλκΈ°(async) μΈν°νμ΄μ€λ₯Ό μ 곡νμ¬ λμ©λ νμΌλ ν¨κ³Όμ μΌλ‘ μ²λ¦¬ν μ μμ΅λλ€.
μ΄ κ°μμμλ File
λ° UploadFile
μ μ¬μ©νμ¬ νμΌμ λ°κ³ , νμΌ μ΄λ¦(filename
)μ΄λ μ½ν
μΈ νμ
(content_type
) κ°μ λ©νλ°μ΄ν°μ μ κ·Όνλ©°, νμΌ λ΄μ©μ μ½κ±°λ μλ²μ μ μ₯νλ λ°©λ²(νΉν λΉλκΈ° λ°©μ)μ μ€μ΅ν©λλ€. λν νμΌ μ
λ‘λ μ κ³ λ €ν΄μΌ ν κΈ°λ³Έμ μΈ λ³΄μ μ¬νμ λν΄μλ κ°λ΅ν μΈκΈν©λλ€.
μ΄ κ°μλ₯Ό λ§μΉλ©΄ μ¬λ¬λΆμ λ€μμ ν μ μκ² λ©λλ€:
multipart/form-data
μΈμ½λ© λ°©μμ΄ μ¬μ©λ¨μ μ΄ν΄ν©λλ€.python-multipart
λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν μ μμ΅λλ€.bytes
νμ
ννΈλ₯Ό μ¬μ©νμ¬ μμ νμΌμ λ©λͺ¨λ¦¬λ‘ μ§μ λ°μ μ μμ΅λλ€.UploadFile
νμ
ννΈλ₯Ό μ¬μ©νμ¬ ν¬κΈ°μ μκ΄μμ΄ ν¨μ¨μ μΌλ‘ νμΌμ λ°μ μ μμ΅λλ€.UploadFile
κ°μ²΄μ μ£Όμ μμ±(filename
, content_type
)κ³Ό λΉλκΈ° λ©μλ(read
, close
)λ₯Ό μ¬μ©ν μ μμ΅λλ€.