FastAPI
Ülevaade
FastAPI on kaasaegne kõrge jõudlusega Pythoni veebiraamistik API-de ehitamiseks. See pakub automaatset interaktiivset dokumentatsiooni, tüübivihjete valideerimist ja sünkroonse asünkroontoe.
Kiirjuhend
Loo repositoorium mallist
Mine oma töölaual vahekaardile Tools & Deployment. Klõpsa nuppu "New Repository", vali rippmenüüst FastAPI mall, sisesta repositooriumi nimi ja alamdomeen ning klõpsa "Create Repository".
Klooni oma repositoorium
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Paigalda sõltuvused
pip install -r requirements.txt
Käivita arendusserver
uvicorn app.main:app --reload
Server töötab aadressil http://localhost:8000. Interaktiivne API dokumentatsioon aadressil http://localhost:8000/docs.
Saada oma muudatused üles
git add .
git commit -m "Initial setup"
git push origin main
Kohalik arendus Dockeriga
Kui sul ei ole Pythonit kohalikult paigaldatud, saad oma FastAPI rakenduse käivitamiseks kasutada Dockerit.
Käskude käivitamine Dockeriga
# Paigalda sõltuvused
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Käivita arendusserver
docker run --rm -v $(pwd):/app -w /app -p 8000:8000 python:3.12 sh -c "pip install -r requirements.txt && uvicorn app.main:app --host 0.0.0.0 --reload"
Andmebaasi seadistamine
NStrim-platvorm pakub sulle MySQL/MariaDB andmebaasi. Seadista oma ühendus .env failis või otse oma andmebaasi seadistusmoodulis.
DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
student01). Täpseid väärtusi kontrolli oma töölaua sisselogimisandmete sektsioonist.Projekti struktuur
├── app/
│ ├── main.py # FastAPI rakenduse sisendpunkt
│ ├── routers/ # Marsruudimoodulid
│ ├── models/ # SQLAlchemy mudelid
│ ├── schemas/ # Pydantic skeemid
│ └── database.py # Andmebaasiühendus
├── templates/ # Jinja2 mallid
├── static/ # CSS, JS, pildid
├── requirements.txt # Pythoni sõltuvused
└── Dockerfile # Dockeri seadistus
Levinud ülesanded
API otspunkti loomine
from fastapi import APIRouter
router = APIRouter()
@router.get("/users")
async def get_users():
return [{"name": "Alice"}, {"name": "Bob"}]
@router.post("/users")
async def create_user(name: str, email: str):
return {"name": name, "email": email}
SQLAlchemy kasutamine
from sqlalchemy import Column, Integer, String
from app.database import Base
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
name = Column(String(100))
email = Column(String(255), unique=True)
Pydantic skeem valideerimiseks
from pydantic import BaseModel
class UserCreate(BaseModel):
name: str
email: str
class UserResponse(BaseModel):
id: int
name: str
email: str
class Config:
from_attributes = True
Kasulikud käsud
uvicorn app.main:app --reload
Käivita arendusserver automaatse taaslaadimisega
pip install -r requirements.txt
Paigalda sõltuvused
pip freeze > requirements.txt
Salvesta praegused sõltuvused
Tõrkeotsing
OperationalError: Can't connect to MySQL server
Põhjus: Andmebaasi host on vale või pole kättesaadav.
Lahendus: Kontrolli, et DATABASE_URL vastaks töölaualt saadud andmebaasi hostile.
ModuleNotFoundError: No module named 'app'
Lahendus: Veendu, et käivitad uvicorn'i projekti juurkataloogist ja et app/__init__.py on olemas.
422 Unprocessable Entity
Lahendus: FastAPI valideerib päringuandmed automaatselt. Kontrolli vastuse keha, et näha, millised väljad valideerimisel ebaõnnestusid. Külasta /docs, et näha oodatavat päringuformaati.