Apžvalga

FastAPI yra modernus, didelio našumo Python žiniatinklio karkasas, skirtas API kurti. Jis turi automatinę interaktyvią dokumentaciją, tipų užuominų patvirtinimą ir async palaikymą iš karto.

Prieš pradėdami
Įsitikinkite, kad jūsų valdymo skydelis atidarytas - jums reikės ten rodomų Git prisijungimo duomenų. Šiame šablone yra FastAPI, Uvicorn, SQLAlchemy ORM, PyMySQL tvarkyklė, Pydantic ir Jinja2 šablonai.

Greitas startas

1

Sukurkite repozitoriją iš šablono

Valdymo skydelyje pereikite į skirtuką Tools & Deployment. Spauskite mygtuką "New Repository", išskleidžiamame sąraše pasirinkite FastAPI šabloną, įveskite repozitorijos pavadinimą ir subdomeną, tada spauskite "Create Repository".

2

Klonuokite savo repozitoriją

git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
3

Įdiekite priklausomybes

pip install -r requirements.txt
4

Paleiskite kūrimo serverį

uvicorn app.main:app --reload

Serveris veikia adresu http://localhost:8000. Interaktyvi API dokumentacija adresu http://localhost:8000/docs.

5

Įkelkite savo pakeitimus

git add .
git commit -m "Initial setup"
git push origin main
Kiekvienas push į Git automatiškai įdiegia jūsų aplikaciją. Patikrinkite Modulio darbo URL valdymo skydelyje, kad pamatytumėte savo gyvą svetainę.

Vietinis kūrimas su Docker

Jei vietoje neturite įdiegto Python, galite naudoti Docker savo FastAPI aplikacijai paleisti.

Kas yra Docker?
Docker sukuria izoliuotus „konteinerius" su visa reikalinga programine įranga (Python, pip) jos neįdiegiant į jūsų kompiuterį.

Komandų vykdymas su Docker

# Įdiegti priklausomybes
docker run --rm -v $(pwd):/app -w /app python:3.12 pip install -r requirements.txt

# Paleisti kūrimo 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"

Duomenų bazės konfigūracija

NStrim platforma jums suteikia MySQL/MariaDB duomenų bazę. Sukonfigūruokite savo prisijungimą .env faile arba tiesiogiai duomenų bazės konfigūracijos modulyje.

DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
Svarbu
Jūsų duomenų bazės pavadinimas ir vartotojo vardas paprastai sutampa su jūsų valdymo skydelio vartotojo vardu (pvz., student01). Tikslioms reikšmėms patikrinkite valdymo skydelio prisijungimo duomenų skiltį.

Projekto struktūra

├── app/
│   ├── main.py                # FastAPI aplikacijos įėjimo taškas
│   ├── routers/               # Maršrutų moduliai
│   ├── models/                # SQLAlchemy modeliai
│   ├── schemas/               # Pydantic schemos
│   └── database.py            # Duomenų bazės prisijungimas
├── templates/                 # Jinja2 šablonai
├── static/                    # CSS, JS, paveikslėliai
├── requirements.txt           # Python priklausomybės
└── Dockerfile                 # Docker konfigūracija
        

Įprastos užduotys

API galutinio taško kūrimas

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 naudojimas

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 patvirtinimui

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

Naudingos komandos

uvicorn app.main:app --reload Paleisti kūrimo serverį su automatiniu perkrovimu
pip install -r requirements.txt Įdiegti priklausomybes
pip freeze > requirements.txt Įrašyti dabartines priklausomybes

Trikčių šalinimas

OperationalError: Can't connect to MySQL server

Priežastis: Duomenų bazės serveris yra neteisingas arba nepasiekiamas.

Sprendimas: Patikrinkite, ar DATABASE_URL sutampa su valdymo skydelio duomenų bazės serveriu.

ModuleNotFoundError: No module named 'app'

Sprendimas: Įsitikinkite, kad uvicorn paleidžiate iš projekto šaknies katalogo ir kad app/__init__.py egzistuoja.

422 Unprocessable Entity

Sprendimas: FastAPI automatiškai patvirtina užklausų duomenis. Atsako turinyje patikrinkite, kurie laukai nepraėjo patvirtinimo. Apsilankykite /docs, kad pamatytumėte tikėtiną užklausos formatą.

Diegimo eiga

Kodo pakeitimas git push pip install Gyvai!
Daugiau informacijos rasite oficialioje FastAPI dokumentacijoje.