π μ½ 1λΆ μ½λ λ° μμλ©λλ€
μ΄μ κΈ λ³΄κΈ°(FastAPI λ 무μμΈκ°?)
κ°λ°λ³΄λ€ λ μ΄λ €μ΄ κ°λ° νκ²½ μ€μ μ μμν΄λ΄ μλ€!
FastAPIλ μ€μΉμ μ€νμ΄ λΉκ΅μ κ°λ¨νμ§λ§, μ λλ‘ λ κ°λ°μ μν΄μλ λͺ κ°μ§ νμ λꡬμ μ€μ μ΄ νμν©λλ€. μ΄ κΈμμλ Windows νκ²½μμ FastAPI νλ‘μ νΈλ₯Ό μμνλ λ° νμν λͺ¨λ κ³Όμ μ μμΈν μλ΄ν©λλ€.
κ°μνκ²½ μμ±λΆν° FastAPI μ€νκΉμ§, νλμ© μμν΄λ΄ μλ€.
β 1. Python μ€μΉ
FastAPIλ Python 3.7 μ΄μμμ λμν©λλ€. κ°μ₯ λ¨Όμ Pythonμ΄ μ€μΉλμ΄ μλμ§ νμΈνκ³ , μμΌλ©΄ μ€μΉν΄λ΄ μλ€.
μ€μΉ λ°©λ²:
- 곡μ Python λ€μ΄λ‘λ νμ΄μ§λ‘ μ΄λ
- μ΅μ λ²μ μ Windows installer (64-bit) ν΄λ¦
- μ€μΉ μ μλ νλͺ© μ²΄ν¬ νμ:
- β Add Python to PATH
- β Install launcher for all users
- μ€μΉ ν 컀맨λ ν둬ννΈ(cmd) μ΄κ³ λ€μ λͺ λ Ήμ΄ μ λ ₯:
python --version
μ μμ μΌλ‘ μ€μΉλμλ€λ©΄ λ²μ μ΄ μΆλ ₯λ©λλ€. μ: Python 3.11.2
π 2. νλ‘μ νΈ ν΄λ μμ±
μμ ν λλ ν 리λ₯Ό νλ λ§λ€μ΄μ£ΌμΈμ. μλ₯Ό λ€μ΄:
C:\Users\μ¬μ©μλͺ
\fastapi-tutorial
μ΄μ ν΄λΉ ν΄λλ‘ μ΄λν©λλ€.
cd C:\Users\μ¬μ©μλͺ
\fastapi-tutorial
π§ͺ 3. κ°μνκ²½(Virtual Environment) μ€μ
κ°μνκ²½μ μ¬μ©νλ©΄ λ€λ₯Έ νλ‘μ νΈμ μμ‘΄μ± μΆ©λ μμ΄ λ 립μ μΌλ‘ κ°λ°ν μ μμ΅λλ€.
κ°μνκ²½ μμ±:
python -m venv venv
venv
λ κ°μνκ²½ ν΄λ μ΄λ¦μ λλ€. μμ λ‘κ² λ°κΏλ λ©λλ€.
κ°μνκ²½ νμ±ν:
venv\Scripts\activate
νμ±νλλ©΄ (venv)
κ°μ ν둬ννΈκ° μμ λΆμ΅λλ€. κ°μνκ²½μ΄ μ μμ μΌλ‘ νμ±νλ κ²μ
λλ€.
π¦ 4. FastAPI & Uvicorn μ€μΉ
FastAPIλ μΉ νλ μμν¬, Uvicornμ μΉ μλ² μν μ ν©λλ€. ν¨κ» μ€μΉν΄μ€λλ€.
pip install fastapi uvicorn
μ€μΉκ° μλ£λλ©΄ λ€μ λͺ λ Ήμ΄λ‘ νμΈ:
pip list
μ¬κΈ°μ fastapi
, uvicorn
μ΄ λ³΄μ΄λ©΄ μ±κ³΅μ
λλ€.
βοΈ 5. Hello FastAPI: 첫 λ²μ§Έ μ± λ§λ€κΈ°
FastAPIμ κΈ°λ³Έ μλμ νμΈν΄λ³΄κΈ° μν΄ κ°λ¨ν μμ λ₯Ό λ§λ€μ΄λ³΄κ² μ΅λλ€.
1. νμΌ μμ±
main.py
λΌλ μ΄λ¦μ νμΌμ μμ±νκ³ , λ€μ μ½λλ₯Ό μμ±ν©λλ€:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, FastAPI!"}
μ΄κ±΄ FastAPIμ κ°μ₯ κΈ°λ³Έμ μΈ APIμ
λλ€. λ£¨νΈ κ²½λ‘(/
)μ GET μμ²μ΄ λ€μ΄μ€λ©΄ JSON ννλ‘ λ©μμ§λ₯Ό λ°νν©λλ€.
π 6. UvicornμΌλ‘ μλ² μ€ν
μλ²λ₯Ό μ€ννλ €λ©΄ μλ λͺ λ Ήμ΄λ₯Ό μ λ ₯νμΈμ:
uvicorn main:app --reload
main
: νμΌ μ΄λ¦ (main.py)app
: FastAPI μΈμ€ν΄μ€ μ΄λ¦--reload
: μ½λ λ³κ²½ μ μλμΌλ‘ μλ²λ₯Ό μ¬μμν΄μ£Όλ κ°λ°μ λͺ¨λ
μ±κ³΅μ μΌλ‘ μ€νλμλ€λ©΄ μλμ²λΌ μΆλ ₯λ©λλ€:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
π 7. λΈλΌμ°μ μμ νμΈ
μ΄μ λΈλΌμ°μ λ₯Ό μ΄κ³ μλ μ£Όμλ‘ μ μν΄λ³΄μΈμ:
- http://127.0.0.1:8000 β βHello, FastAPI!β λ©μμ§ νμΈ
- http://127.0.0.1:8000/docs β Swagger UI μλ λ¬Έμν νμ΄μ§
- http://127.0.0.1:8000/redoc β ReDoc λ¬Έμν νμ΄μ§
μλμΌλ‘ μμ±λ API λ¬Έμ λλΆμ λ°λ‘ ν μ€νΈλ κ°λ₯νκ³ , λμλ νλμ λ³Ό μ μμ΅λλ€.
π οΈ (μ ν) Visual Studio Code νκ²½ μ€μ ν
VS Codeλ FastAPI κ°λ°μ λ§€μ° μ ν©ν μλν°μ λλ€.
μΆμ² νμ₯ νλ‘κ·Έλ¨:
- Python (Microsoft)
- Pylance (νμ ννΈμ μλμμ± μ§μ)
- REST Client (API ν μ€νΈμ μ μ©)
ν°λ―Έλμμ κ°μνκ²½ μλ νμ±ν
VS Codeλ₯Ό νλ‘μ νΈ ν΄λμμ μ€ννλ©΄ κΈ°λ³Έ ν°λ―Έλμμ venv
κ°μνκ²½μ΄ μλμΌλ‘ νμ±νλ©λλ€.
code .
π§Ύ λ§λ¬΄λ¦¬: νκ²½ μΈν μ ν λ², ν¨κ³Όλ νμ
FastAPIλ λΉ λ₯΄κ³ μμ°μ μΈ μΉ νλ μμν¬μ΄μ§λ§, 첫 κ±Έμμ μ λΌλ κ²μ΄ μ€μν©λλ€. μ΄λ² κΈμμλ Windowsμμ Python, κ°μνκ²½, FastAPI μ€μΉ, κ·Έλ¦¬κ³ μ²« μ€νκΉμ§μ μ κ³Όμ μ μ 리νμ΅λλ€.
μ΄μ 본격μ μΈ FastAPI κ°λ°μ μν μ€λΉκ° μλ£λμμ΅λλ€!
λ€μ κΈμμλ λΌμ°ν κ³Ό κ²½λ‘ λ§€κ°λ³μ, 쿼리 λ§€κ°λ³μμ λν΄ κΉμ΄ μκ² λ€λ€λ³Ό μμ μ λλ€.
FastAPI 곡μ λ¬Έμ : https://fastapi.tiangolo.com/ko/
