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
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
### 1. Spiele hinzufügen
### Benutzerverwaltung
- **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!"
}
```
- **POST /users**: Erstellt einen neuen Benutzer (nur für Admins).
- **POST /users/login**: Meldet einen Benutzer an und gibt ein JWT-Token zurück.
- **GET /users**: Gibt eine Liste aller Benutzer zurück (nur für Admins).
- **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).
- **PUT /users/change_password**: Ändert das Passwort des angemeldeten Benutzers. Erfordert das aktuelle Passwort und das neue Passwort.
### 2. Alle Spiele abrufen
### Spieleverwaltung
- **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!"
}
```
- **POST /games**: Fügt ein neues Spiel zur Sammlung hinzu. Erfordert ein Bild-URL und den Titel des Spiels.
- **GET /games**: Gibt eine Liste aller Spiele in der Sammlung zurück.
- **DELETE /games/<int:game_id>**: Löscht ein Spiel aus der Sammlung.
- **GET /games/search**: Sucht nach Spielen basierend auf einem Suchbegriff.
## Installation
1. Klone das Repository.
1. Klone das Repository:
```bash
git clone <repository-url>
cd game_collection
```
2. Installiere die Abhängigkeiten:
```bash
pip install -r requirements.txt
```
3. Starte die Anwendung:
```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
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.
Dieses Projekt ist unter der MIT-Lizenz lizenziert.