FastAPI

Täydellinen käyttöönotto-opas: FastAPI NStrim-alustalla

Yleiskatsaus

FastAPI on moderni, suorituskykyinen Python-webkehys rajapintojen rakentamiseen. Se tarjoaa automaattisen interaktiivisen dokumentaation, tyyppivihjevalidoinnin ja async-tuen suoraan.

Ennen kuin aloitat
Varmista, että kojelautasi on auki - tarvitset siellä näkyvät Git-tunnukset. Tämä malli sisältää FastAPI:n, Uvicornin, SQLAlchemy ORM:n, PyMySQL-ajurin, Pydanticin ja Jinja2-mallinemoottoren.

Pikaopas

1

Luo arkisto mallista

Siirry kojelaudallasi Tools & Deployment -välilehteen. Napsauta "New Repository" -painiketta, valitse FastAPI-malli pudotusvalikosta, anna arkiston nimi ja alidomain ja napsauta "Create Repository".

2

Kloonaa arkistosi

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

Asenna riippuvuudet

pip install -r requirements.txt
4

Käynnistä kehityspalvelin

uvicorn app.main:app --reload

Palvelin käynnistyy osoitteessa http://localhost:8000. Interaktiivinen API-dokumentaatio osoitteessa http://localhost:8000/docs.

5

Lähetä muutoksesi

git add .
git commit -m "Initial setup"
git push origin main
Jokainen push Gitiin julkaisee sovelluksesi automaattisesti. Tarkista moduulin työ-URL kojelaudaltasi nähdäksesi live-sivustosi.

Paikallinen kehitys Dockerilla

Jos sinulla ei ole Pythonia asennettuna paikallisesti, voit käyttää Dockeria FastAPI-sovelluksesi suorittamiseen.

Mikä on Docker?
Docker luo eristettyjä kontteja, joissa on kaikki tarvitsemasi ohjelmistot (Python, pip) asentamatta niitä tietokoneellesi.

Komentojen suorittaminen Dockerilla

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

# Käynnistä kehityspalvelin
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"

Tietokantakonfiguraatio

NStrim-alusta tarjoaa sinulle MySQL/MariaDB-tietokannan. Konfiguroi yhteys .env-tiedostossa tai suoraan tietokantakonfiguraatiomoduulissasi.

DATABASE_URL=mysql+pymysql://<username>:<password>@db.<session-domain>:3306/<username>
Tärkeää
Tietokannan nimi ja käyttäjänimi ovat yleensä samat kuin kojelaudan käyttäjänimesi (esim. student01). Tarkista tarkat arvot kojelaudan tunnusosiosta.

Projektin rakenne

├── app/
│   ├── main.py                # FastAPI-sovelluksen aloituspiste
│   ├── routers/               # Reititysmoduulit
│   ├── models/                # SQLAlchemy-mallit
│   ├── schemas/               # Pydantic-skeemat
│   └── database.py            # Tietokantayhteys
├── templates/                 # Jinja2-mallit
├── static/                    # CSS, JS, kuvat
├── requirements.txt           # Python-riippuvuudet
└── Dockerfile                 # Docker-konfiguraatio
        

Yleiset tehtävät

API-päätepisteen luominen

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}

SQLAlchemyn käyttö

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-skeema validointiin

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

Hyödylliset komennot

uvicorn app.main:app --reload Käynnistä kehityspalvelin automaattisella uudelleenlatauksella
pip install -r requirements.txt Asenna riippuvuudet
pip freeze > requirements.txt Tallenna nykyiset riippuvuudet

Vianmääritys

OperationalError: Can't connect to MySQL server

Syy: Tietokantapalvelin on virheellinen tai ei saavutettavissa.

Ratkaisu: Tarkista, että DATABASE_URL vastaa kojelaudan tietokantapalvelinta.

ModuleNotFoundError: No module named 'app'

Ratkaisu: Varmista, että suoritat uvicornin projektin juurihakemistosta ja että app/__init__.py on olemassa.

422 Unprocessable Entity

Ratkaisu: FastAPI validoi pyyntödatan automaattisesti. Tarkista vastauksen sisällöstä, mitkä kentät eivät läpäisseet validointia. Käy osoitteessa /docs nähdäksesi odotetun pyyntömuodon.

Käyttöönotto

Koodimuutos git push pip install Live!
Lisätietoja virallisesta FastAPI-dokumentaatiosta.