added restful api
This commit is contained in:
commit
4e359cf3ef
7 changed files with 530 additions and 0 deletions
220
backend/README.md
Normal file
220
backend/README.md
Normal file
|
@ -0,0 +1,220 @@
|
|||
# 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
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue