docs: update README to reflect new features and endpoints
This commit is contained in:
parent
facc27def3
commit
14e5a9ae1c
@ -1,304 +1,51 @@
|
|||||||
# Game Collection API
|
# Game Collection API
|
||||||
|
|
||||||
Dies ist ein Backend mit Flask, das eine Sammlung von Spielen verwaltet und eine SQLite-Datenbank verwendet.
|
Dies ist eine Flask-basierte API zur Verwaltung einer Sammlung von Spielen. Die API ermöglicht das Hinzufügen, Abrufen, Bearbeiten und Löschen von Spielen sowie die Benutzerverwaltung.
|
||||||
|
|
||||||
## Endpunkte
|
## Endpunkte
|
||||||
|
|
||||||
### 1. Spiele hinzufügen
|
### Benutzerverwaltung
|
||||||
|
|
||||||
- **URL:** `/games`
|
- **POST /users**: Erstellt einen neuen Benutzer (nur für Admins).
|
||||||
- **Method:** `POST`
|
- **POST /users/login**: Meldet einen Benutzer an und gibt ein JWT-Token zurück.
|
||||||
- **Body:**
|
- **GET /users**: Gibt eine Liste aller Benutzer zurück (nur für Admins).
|
||||||
```json
|
- **PUT /users/<int:user_id>**: Aktualisiert die Informationen eines Benutzers (nur für Admins).
|
||||||
{
|
- **DELETE /users/<int:user_id>**: Löscht einen Benutzer (nur für Admins).
|
||||||
"image": "URL zum Bild",
|
- **PUT /users/change_password**: Ändert das Passwort des angemeldeten Benutzers. Erfordert das aktuelle Passwort und das neue Passwort.
|
||||||
"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
|
### Spieleverwaltung
|
||||||
|
|
||||||
- **URL:** `/games`
|
- **POST /games**: Fügt ein neues Spiel zur Sammlung hinzu. Erfordert ein Bild-URL und den Titel des Spiels.
|
||||||
- **Method:** `GET`
|
- **GET /games**: Gibt eine Liste aller Spiele in der Sammlung zurück.
|
||||||
- **Antwort:**
|
- **DELETE /games/<int:game_id>**: Löscht ein Spiel aus der Sammlung.
|
||||||
- **Status 200:** Liste aller Spiele.
|
- **GET /games/search**: Sucht nach Spielen basierend auf einem Suchbegriff.
|
||||||
- **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
|
## Installation
|
||||||
|
|
||||||
1. Klone das Repository.
|
1. Klone das Repository:
|
||||||
|
```bash
|
||||||
|
git clone <repository-url>
|
||||||
|
cd game_collection
|
||||||
|
```
|
||||||
|
|
||||||
2. Installiere die Abhängigkeiten:
|
2. Installiere die Abhängigkeiten:
|
||||||
```bash
|
```bash
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Starte die Anwendung:
|
3. Starte die Anwendung:
|
||||||
```bash
|
```bash
|
||||||
python app.py
|
flask run
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Datenbank
|
||||||
|
|
||||||
|
Die Anwendung verwendet SQLite zur Speicherung von Benutzern und Spielen. Die Datenbank wird beim ersten Start der Anwendung automatisch erstellt.
|
||||||
|
|
||||||
|
## Sicherheit
|
||||||
|
|
||||||
|
Die API verwendet JWT für die Authentifizierung. Stelle sicher, dass du einen geheimen Schlüssel in deiner Umgebung festlegst, um die Token zu signieren.
|
||||||
|
|
||||||
## Lizenz
|
## Lizenz
|
||||||
|
|
||||||
Dieses Projekt ist lizenziert unter der MIT-Lizenz.
|
Dieses Projekt ist unter der MIT-Lizenz lizenziert.
|
||||||
|
|
||||||
## 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.
|
|
||||||
|
Loading…
Reference in New Issue
Block a user