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
|
||||
|
||||
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.
|
||||
|
Loading…
Reference in New Issue
Block a user