tschunkorder/backend/README.md

4.7 KiB

Tschunk Order API

Eine RESTful API für Tschunk-Bestellungen, entwickelt mit FastAPI.

Features

  • Bestellungen mit mehreren Getränken erstellen
  • Alle Bestellungen abrufen
  • Spezifische Bestellungen löschen
  • Unterstützung für verschiedene Tschunk-Varianten
  • Wahl zwischen Flora Mate und Club Mate
  • Mengenangabe für jedes Getränk (Standard: 1)
  • Anmerkungen und Sonderwünsche für jedes Getränk

Verfügbare Getränke

  • Tschunk
  • Tschunk Hannover-Mische
  • Tschunk alkoholfreier Rum
  • Virgin Tschunk

Mate-Sorten

  • Flora Mate
  • Club Mate

Installation

Voraussetzungen

  • Python 3.8+ installiert

Setup

  1. Virtuelles Environment erstellen und aktivieren:
cd backend

# Virtuelles Environment erstellen
python -m venv venv

# Virtuelles Environment aktivieren
# Unter Linux/macOS:
source venv/bin/activate

# Unter Windows:
# venv\Scripts\activate
  1. Abhängigkeiten installieren:
pip install -r requirements.txt

Verwendung

Server starten

# Stelle sicher, dass das virtuelle Environment aktiviert ist
source venv/bin/activate  # Linux/macOS
# venv\Scripts\activate   # Windows

# Server starten
python main.py

Oder mit uvicorn:

uvicorn main:app --reload

Der Server läuft dann auf http://localhost:8000

API-Dokumentation

Die automatisch generierte API-Dokumentation ist verfügbar unter:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc

API-Endpunkte

1. Bestellung erstellen

POST /orders

Beispiel-Request:

{
  "drinks": [
    {
      "drink_type": "Tschunk",
      "mate_type": "Club Mate",
      "quantity": 2,
      "notes": "Bitte extra kalt servieren"
    },
    {
      "drink_type": "Virgin Tschunk",
      "mate_type": "Flora Mate",
      "notes": "Ohne Eiswürfel"
    },
    {
      "drink_type": "Tschunk Hannover-Mische",
      "mate_type": "Club Mate",
      "quantity": 1
    }
  ]
}

Hinweise:

  • Das quantity-Feld ist optional. Falls nicht angegeben, wird automatisch 1 verwendet.
  • Das notes-Feld ist optional und kann für Sonderwünsche oder Anmerkungen verwendet werden (max. 500 Zeichen).

2. Alle Bestellungen abrufen

GET /orders

3. Bestellung löschen

DELETE /orders/{order_id}

4. Verfügbare Getränke anzeigen

GET /drinks

Beispiel-Verwendung mit curl

Bestellung erstellen:

curl -X POST "http://localhost:8000/orders" \
     -H "Content-Type: application/json" \
     -d '{
       "drinks": [
         {
           "drink_type": "Tschunk",
           "mate_type": "Club Mate",
           "quantity": 3,
           "notes": "Bitte mit Limettenscheibe garnieren"
         },
         {
           "drink_type": "Virgin Tschunk",
           "mate_type": "Flora Mate",
           "notes": "Allergie gegen Zitrusfrüchte"
         }
       ]
     }'

Alle Bestellungen abrufen:

curl -X GET "http://localhost:8000/orders"

Bestellung löschen:

curl -X DELETE "http://localhost:8000/orders/{order_id}"

Testing

Das Projekt enthält ein Test-Skript, das alle API-Endpunkte testet:

# Stelle sicher, dass das virtuelle Environment aktiviert ist
source venv/bin/activate

# Test-Skript ausführen
python test_api.py

Projektstruktur

backend/
├── main.py          # FastAPI-Anwendung
├── models.py        # Pydantic-Modelle
├── database.py      # In-Memory-Datenbank
├── test_api.py      # Test-Skript
├── requirements.txt # Python-Abhängigkeiten
├── .gitignore       # Git-Ignore-Datei
├── venv/            # Virtuelles Environment (wird ignoriert)
└── README.md        # Diese Datei

Hinweise

  • Virtuelles Environment: Das Projekt verwendet ein virtuelles Environment, um Abhängigkeiten zu isolieren
  • In-Memory-Datenbank: Die API verwendet eine In-Memory-Datenbank, d.h. alle Daten gehen beim Neustart verloren
  • Produktionsumgebung: Für Produktionsumgebungen sollte eine persistente Datenbank verwendet werden
  • Validierung: Die API validiert automatisch alle Eingaben mit Pydantic
  • Mengenangabe: Jedes Getränk kann eine Menge haben (mindestens 1, Standard: 1)
  • Anmerkungen: Jedes Getränk kann optionale Anmerkungen haben (max. 500 Zeichen)

Troubleshooting

Virtuelles Environment aktivieren

Falls du eine Fehlermeldung bezüglich fehlender Module erhältst, stelle sicher, dass das virtuelle Environment aktiviert ist:

# Status prüfen
which python  # Sollte auf venv/bin/python zeigen

# Falls nicht aktiviert:
source venv/bin/activate

Port bereits belegt

Falls Port 8000 bereits belegt ist, kannst du einen anderen Port verwenden:

uvicorn main:app --reload --port 8001