docs: Update README to include detailed request and response data for API endpoints

This commit is contained in:
Manuel Weiser 2024-09-03 21:16:14 +02:00
parent c1b6396142
commit f780591c7b

View File

@ -7,26 +7,147 @@ Dies ist eine Flask-basierte API zur Verwaltung einer Sammlung von Spielen. Die
### Benutzerverwaltung ### Benutzerverwaltung
- **POST /users**: Erstellt einen neuen Benutzer. Dieser Endpunkt ist nur für Administratoren zugänglich. Der Benutzer muss einen Benutzernamen und ein Passwort angeben. Der Administrator kann auch die Rolle des neuen Benutzers festlegen (entweder 'user' oder 'admin'). - **POST /users**: Erstellt einen neuen Benutzer. Dieser Endpunkt ist nur für Administratoren zugänglich. Der Benutzer muss einen Benutzernamen und ein Passwort angeben. Der Administrator kann auch die Rolle des neuen Benutzers festlegen (entweder 'user' oder 'admin').
- **Gesendete Daten**:
```json
{
"username": "neuerBenutzer",
"password": "sicheresPasswort",
"role": "user" // optional
}
```
- **Antwort**:
```json
{
"message": "User created!"
}
```
- **POST /users/login**: Meldet einen Benutzer an und gibt ein JWT-Token zurück. Der Benutzer muss seinen Benutzernamen und sein Passwort angeben. Bei erfolgreicher Anmeldung wird ein Token generiert, das für zukünftige Anfragen verwendet werden kann. - **POST /users/login**: Meldet einen Benutzer an und gibt ein JWT-Token zurück. Der Benutzer muss seinen Benutzernamen und sein Passwort angeben. Bei erfolgreicher Anmeldung wird ein Token generiert, das für zukünftige Anfragen verwendet werden kann.
- **Gesendete Daten**:
```json
{
"username": "benutzername",
"password": "passwort"
}
```
- **Antwort**:
```json
{
"message": "Login successful!",
"token": "jwt_token",
"role": "user" // oder "admin"
}
```
- **GET /users**: Gibt eine Liste aller Benutzer zurück. Dieser Endpunkt ist nur für Administratoren zugänglich. Die Antwort enthält Informationen wie Benutzer-ID, Benutzernamen, Rolle und das Datum der letzten Anmeldung. - **GET /users**: Gibt eine Liste aller Benutzer zurück. Dieser Endpunkt ist nur für Administratoren zugänglich. Die Antwort enthält Informationen wie Benutzer-ID, Benutzernamen, Rolle und das Datum der letzten Anmeldung.
- **Antwort**:
```json
[
{
"id": 1,
"username": "admin",
"role": "admin",
"last_login": "2023-10-01 12:00:00"
},
...
]
```
- **PUT /users/<int:user_id>**: Aktualisiert die Informationen eines Benutzers. Nur Administratoren können diesen Endpunkt verwenden. Der Administrator kann den Benutzernamen, die Rolle und das Passwort des Benutzers aktualisieren. - **PUT /users/<int:user_id>**: Aktualisiert die Informationen eines Benutzers. Nur Administratoren können diesen Endpunkt verwenden. Der Administrator kann den Benutzernamen, die Rolle und das Passwort des Benutzers aktualisieren.
- **Gesendete Daten**:
```json
{
"username": "neuerBenutzername",
"role": "admin", // optional
"password": "neuesPasswort" // optional
}
```
- **Antwort**:
```json
{
"message": "User updated!"
}
```
- **DELETE /users/<int:user_id>**: Löscht einen Benutzer. Dieser Endpunkt ist nur für Administratoren zugänglich. Der Administrator muss die Benutzer-ID angeben, um den Benutzer zu löschen. - **DELETE /users/<int:user_id>**: Löscht einen Benutzer. Dieser Endpunkt ist nur für Administratoren zugänglich. Der Administrator muss die Benutzer-ID angeben, um den Benutzer zu löschen.
- **Antwort**:
```json
{
"message": "User deleted!"
}
```
- **PUT /users/change_password**: Ändert das Passwort des angemeldeten Benutzers. Der Benutzer muss sein aktuelles Passwort und das neue Passwort angeben. Wenn das aktuelle Passwort korrekt ist, wird das Passwort des Benutzers aktualisiert. - **PUT /users/change_password**: Ändert das Passwort des angemeldeten Benutzers. Der Benutzer muss sein aktuelles Passwort und das neue Passwort angeben. Wenn das aktuelle Passwort korrekt ist, wird das Passwort des Benutzers aktualisiert.
- **Gesendete Daten**:
```json
{
"current_password": "aktuellesPasswort",
"new_password": "neuesPasswort"
}
```
- **Antwort**:
```json
{
"message": "Password changed successfully!"
}
```
### Spieleverwaltung ### Spieleverwaltung
- **POST /games**: Fügt ein neues Spiel zur Sammlung hinzu. Der Benutzer muss ein Bild-URL und den Titel des Spiels angeben. Die API lädt das Bild herunter, speichert es lokal und erstellt einen neuen Spieleintrag in der Datenbank. Der Benutzer, der das Spiel hinzufügt, wird als Käufer festgelegt. - **POST /games**: Fügt ein neues Spiel zur Sammlung hinzu. Der Benutzer muss ein Bild-URL und den Titel des Spiels angeben. Die API lädt das Bild herunter, speichert es lokal und erstellt einen neuen Spieleintrag in der Datenbank. Der Benutzer, der das Spiel hinzufügt, wird als Käufer festgelegt.
- **Gesendete Daten**:
```json
{
"title": "Spiel Titel",
"image": "https://example.com/image.jpg"
}
```
- **Antwort**:
```json
{
"message": "Game added!"
}
```
- **GET /games**: Gibt eine Liste aller Spiele in der Sammlung zurück. Der Benutzer muss authentifiziert sein. Die Antwort enthält Informationen zu jedem Spiel, einschließlich Titel, Bild (als Base64-kodiert), Kaufdatum, Käufer und ob das Spiel im Besitz des Benutzers ist. - **GET /games**: Gibt eine Liste aller Spiele in der Sammlung zurück. Der Benutzer muss authentifiziert sein. Die Antwort enthält Informationen zu jedem Spiel, einschließlich Titel, Bild (als Base64-kodiert), Kaufdatum, Käufer und ob das Spiel im Besitz des Benutzers ist.
- **Antwort**:
```json
[
{
"id": 1,
"image": "base64_encoded_image",
"title": "Spiel Titel",
"date": "2023-10-01",
"buyer": "benutzername",
"owned": true
},
...
]
```
- **DELETE /games/<int:game_id>**: Löscht ein Spiel aus der Sammlung. Der Benutzer muss authentifiziert sein und die Spiele-ID angeben. Wenn das Spiel gefunden wird, wird es aus der Datenbank und vom Dateisystem gelöscht. - **DELETE /games/<int:game_id>**: Löscht ein Spiel aus der Sammlung. Der Benutzer muss authentifiziert sein und die Spiele-ID angeben. Wenn das Spiel gefunden wird, wird es aus der Datenbank und vom Dateisystem gelöscht.
- **Antwort**:
```json
{
"message": "Game deleted!"
}
```
- **GET /games/search**: Sucht nach Spielen basierend auf einem Suchbegriff. Der Benutzer muss authentifiziert sein. Der Suchbegriff wird als Abfrageparameter übergeben. Die API sendet eine Anfrage an eine externe Website, um Spiele zu finden, die dem Suchbegriff entsprechen, und gibt die Ergebnisse zurück. - **GET /games/search**: Sucht nach Spielen basierend auf einem Suchbegriff. Der Benutzer muss authentifiziert sein. Der Suchbegriff wird als Abfrageparameter übergeben. Die API sendet eine Anfrage an eine externe Website, um Spiele zu finden, die dem Suchbegriff entsprechen, und gibt die Ergebnisse zurück.
- **Antwort**:
```json
[
{
"title": "Spiel Titel",
"link": "https://example.com/game",
"image_link": "https://example.com/image.jpg",
"release_date": "2023-10-01",
"price": "$59.99",
"rating": "5/5"
},
...
]
```
## Installation ## Installation