305 lines
6.3 KiB
Markdown
305 lines
6.3 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. 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!"
|
|
}
|
|
```
|
|
|
|
### 4. 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!"
|
|
}
|
|
```
|
|
|
|
### 5. Spiele suchen
|
|
|
|
- **URL:** `/games/search`
|
|
- **Method:** `GET`
|
|
- **Query Parameter:**
|
|
- `search_keywords`: Das Suchwort für die Spiele.
|
|
- **Antwort:**
|
|
- **Status 200:** Liste der gefundenen Spiele.
|
|
- **Beispiel:**
|
|
```json
|
|
[
|
|
{
|
|
"title": "Titel des Spiels",
|
|
"link": "URL zum Spiel",
|
|
"image_link": "URL zum Bild",
|
|
"release_date": "Veröffentlichungsdatum",
|
|
"price": "Preis",
|
|
"rating": "Bewertung"
|
|
}
|
|
]
|
|
```
|
|
- **Status 400:** Kein Suchbegriff angegeben.
|
|
- **Beispiel:**
|
|
```json
|
|
{
|
|
"message": "No search term provided!"
|
|
}
|
|
```
|
|
- **Status 500:** Fehler beim Abrufen der Seite.
|
|
- **Beispiel:**
|
|
```json
|
|
{
|
|
"message": "Error fetching the page."
|
|
}
|
|
```
|
|
|
|
### 6. 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!"
|
|
}
|
|
```
|
|
|
|
### 7. 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!"
|
|
}
|
|
```
|
|
|
|
### 8. 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"
|
|
}
|
|
]
|
|
```
|
|
|
|
### 9. 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!"
|
|
}
|
|
```
|
|
|
|
### 10. 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!"
|
|
}
|
|
```
|
|
|
|
## 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.
|