MikaList/game_collection/README.md

269 lines
5.5 KiB
Markdown

# Game Collection API
Dies ist ein Backend mit Flask, das eine Sammlung von Spielen verwaltet und eine SQLite-Datenbank verwendet.
## Endpunkte
### 1. Spiele hinzufügen
- **URL:** `/games`
- **Method:** `POST`
- **Body:**
```json
{
"image": "URL zum Bild",
"title": "Titel des Spiels",
"date": "Kaufdatum (YYYY-MM-DD)",
"buyer": "Name des Käufers",
"owned": true/false
}
```
- **Antwort:**
- **Status 201:** Spiel erfolgreich hinzugefügt.
- **Beispiel:**
```json
{
"message": "Game added!"
}
```
### 2. Alle Spiele abrufen
- **URL:** `/games`
- **Method:** `GET`
- **Antwort:**
- **Status 200:** Liste aller Spiele.
- **Beispiel:**
```json
[
{
"id": 1,
"image": "URL zum Bild",
"title": "Titel des Spiels",
"date": "Kaufdatum",
"buyer": "Name des Käufers",
"owned": true
}
]
```
### 3. Benutzer erstellen
- **URL:** `/users`
- **Method:** `POST`
- **Body:**
```json
{
"username": "Benutzername",
"password": "Passwort",
"role": "user/admin" # Optional, Standard ist 'user'
}
```
- **Antwort:**
- **Status 201:** Benutzer erfolgreich erstellt (nur für Administratoren).
- **Beispiel:**
```json
{
"message": "User created!"
}
```
### 4. Benutzeranmeldung
- **URL:** `/users/login`
- **Method:** `POST`
- **Body:**
```json
{
"username": "Benutzername",
"password": "Passwort"
}
```
- **Antwort:**
- **Status 200:** Anmeldung erfolgreich.
- **Beispiel:**
```json
{
"message": "Login successful!",
"role": "user/admin"
}
```
- **Status 401:** Ungültige Anmeldedaten.
- **Beispiel:**
```json
{
"message": "Invalid credentials!"
}
```
### 5. Alle Benutzer abrufen
- **URL:** `/users`
- **Method:** `GET`
- **Antwort:**
- **Status 200:** Liste aller Benutzer.
- **Beispiel:**
```json
[
{
"id": 1,
"username": "Benutzername",
"role": "user/admin",
"last_login": "2023-10-01 12:00:00"
}
]
```
### 6. Benutzer bearbeiten
- **URL:** `/users/<user_id>`
- **Method:** `PUT`
- **Body:**
```json
{
"username": "Neuer Benutzername",
"role": "user/admin", # Optional
"password": "Neues Passwort" # Optional, Passwort kann bearbeitet werden, wird aber nicht angezeigt
}
```
- **Antwort:**
- **Status 200:** Benutzer erfolgreich aktualisiert (nur für Administratoren).
- **Beispiel:**
```json
{
"message": "User updated!"
}
```
- **Status 401:** Unbefugter Zugriff.
- **Beispiel:**
```json
{
"message": "Unauthorized access! Only admins can edit users."
}
```
- **Status 404:** Benutzer nicht gefunden.
- **Beispiel:**
```json
{
"message": "User not found!"
}
```
### 7. Benutzer löschen
- **URL:** `/users/<user_id>`
- **Method:** `DELETE`
- **Antwort:**
- **Status 200:** Benutzer erfolgreich gelöscht (nur für Administratoren).
- **Beispiel:**
```json
{
"message": "User deleted!"
}
```
- **Status 401:** Unbefugter Zugriff.
- **Beispiel:**
```json
{
"message": "Unauthorized access! Only admins can delete users."
}
```
- **Status 404:** Benutzer nicht gefunden.
- **Beispiel:**
```json
{
"message": "User not found!"
}
```
### 8. Spiel bearbeiten
- **URL:** `/games/<game_id>`
- **Method:** `PUT`
- **Body:**
```json
{
"title": "Neuer Titel",
"image": "Neue URL zum Bild",
"owned": true/false # Optional, um den Besitzstatus zu aktualisieren
}
```
- **Antwort:**
- **Status 200:** Spiel erfolgreich aktualisiert.
- **Beispiel:**
```json
{
"message": "Game updated!"
}
```
- **Status 401:** Unbefugter Zugriff.
- **Beispiel:**
```json
{
"message": "Unauthorized access!"
}
```
- **Status 404:** Spiel nicht gefunden.
- **Beispiel:**
```json
{
"message": "Game not found!"
}
```
### 9. Spiel löschen
- **URL:** `/games/<game_id>`
- **Method:** `DELETE`
- **Antwort:**
- **Status 200:** Spiel erfolgreich gelöscht (nur für Administratoren).
- **Beispiel:**
```json
{
"message": "Game deleted!"
}
```
- **Status 401:** Unbefugter Zugriff.
- **Beispiel:**
```json
{
"message": "Unauthorized access! Only admins can delete games."
}
```
- **Status 404:** Spiel nicht gefunden.
- **Beispiel:**
```json
{
"message": "Game not found!"
}
```
## Installation
1. Klone das Repository.
2. Installiere die Abhängigkeiten:
```bash
pip install -r requirements.txt
```
3. Starte die Anwendung:
```bash
python app.py
```
## Lizenz
Dieses Projekt ist lizenziert unter der MIT-Lizenz.
## Datenbankstruktur
Die Datenbank enthält zwei Tabellen: `games` und `users`. Die `users`-Tabelle hat die folgenden Spalten:
- `id`: Eindeutige Benutzer-ID
- `username`: Eindeutiger Benutzername
- `password`: Passwort des Benutzers (verschlüsselt gespeichert)
- `role`: Rolle des Benutzers (user oder admin)
- `last_login`: Zeitstempel der letzten Anmeldung
## Standardbenutzer
Beim Erstellen der Datenbank wird ein Standardbenutzer mit dem Benutzernamen "admin" und dem Passwort "admin" erstellt. Das Passwort wird verschlüsselt gespeichert. Nur Administratoren können neue Benutzer erstellen.