docs: update README to reflect new features and endpoints

This commit is contained in:
Manuel Weiser 2024-09-03 21:14:54 +02:00
parent facc27def3
commit 14e5a9ae1c

View File

@ -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.