220 lines
No EOL
4.7 KiB
Markdown
220 lines
No EOL
4.7 KiB
Markdown
# 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:**
|
|
|
|
```bash
|
|
cd backend
|
|
|
|
# Virtuelles Environment erstellen
|
|
python -m venv venv
|
|
|
|
# Virtuelles Environment aktivieren
|
|
# Unter Linux/macOS:
|
|
source venv/bin/activate
|
|
|
|
# Unter Windows:
|
|
# venv\Scripts\activate
|
|
```
|
|
|
|
2. **Abhängigkeiten installieren:**
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Verwendung
|
|
|
|
### Server starten
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
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:
|
|
```json
|
|
{
|
|
"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:
|
|
```bash
|
|
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:
|
|
```bash
|
|
curl -X GET "http://localhost:8000/orders"
|
|
```
|
|
|
|
### Bestellung löschen:
|
|
```bash
|
|
curl -X DELETE "http://localhost:8000/orders/{order_id}"
|
|
```
|
|
|
|
## Testing
|
|
|
|
Das Projekt enthält ein Test-Skript, das alle API-Endpunkte testet:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
uvicorn main:app --reload --port 8001
|
|
``` |