FastAPI
Översikt
FastAPI är ett modernt Python-webbramverk med hög prestanda för att bygga API:er. Det erbjuder automatisk interaktiv dokumentation, validering via type hints och async-stöd från start.
Kom igång
Skapa repository från mall
Gå till fliken Tools & Deployment i din dashboard. Klicka på knappen "New Repository", välj FastAPI-mallen från rullgardinsmenyn, ange ett repository-namn och en subdomän och klicka sedan på "Create Repository".
Klona ditt repository
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Installera beroenden
pip install -r requirements.txt
Starta utvecklingsservern
uvicorn app.main:app --reload
Servern körs på http://localhost:8000. Interaktiv API-dokumentation finns på http://localhost:8000/docs.
Pusha dina ändringar
git add .
git commit -m "Initial setup"
git push origin main
Lokal utveckling med Docker
Om du inte har Python installerat lokalt kan du använda Docker för att köra din FastAPI-applikation.
Köra kommandon med Docker
# Install dependencies
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt
# Run development server
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"
Databaskonfiguration
NStrim-plattformen tillhandahåller en MySQL/MariaDB-databas. Konfigurera din anslutning i .env-filen eller direkt i din modul för databaskonfiguration.
DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
student01). Kontrollera avsnittet med inloggningsuppgifter i din dashboard för exakta värden.Projektstruktur
├── app/
│ ├── main.py # Ingångspunkt för FastAPI-applikationen
│ ├── routers/ # Ruttmoduler
│ ├── models/ # SQLAlchemy-modeller
│ ├── schemas/ # Pydantic-scheman
│ └── database.py # Databasanslutning
├── templates/ # Jinja2-mallar
├── static/ # CSS, JS, bilder
├── requirements.txt # Python-beroenden
└── Dockerfile # Docker-konfiguration
Vanliga uppgifter
Skapa en API-endpoint
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}
Använda SQLAlchemy
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-schema för validering
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
Användbara kommandon
uvicorn app.main:app --reload
Starta utvecklingsserver med autoreload
pip install -r requirements.txt
Installera beroenden
pip freeze > requirements.txt
Spara aktuella beroenden
Felsökning
OperationalError: Can't connect to MySQL server
Orsak: Databasvärden är felaktig eller inte tillgänglig.
Lösning: Kontrollera att DATABASE_URL matchar databasvärden från din dashboard.
ModuleNotFoundError: No module named 'app'
Lösning: Säkerställ att du kör uvicorn från projektets rotmapp och att app/__init__.py finns.
422 Unprocessable Entity
Lösning: FastAPI validerar förfrågningsdata automatiskt. Kontrollera svarets body för information om vilka fält som inte klarade valideringen. Besök /docs för att se det förväntade förfrågningsformatet.