Skip to content

Index

Routes: Allgemeines

Die API-Routes sind in der Datei routes/api.php definiert. Die Routen sind in Gruppen unterteilt, die jeweils eine eigene Middleware verwenden. Die Routen sind in der Gruppe api zusammengefasst und verwenden die Middleware api. Die Routen in der Gruppe api sind für den Zugriff auf die API vorgesehen. Die Routen in der Gruppe auth verwenden die Middleware auth:api und sind für den Zugriff auf die API mit Authentifizierung vorgesehen.

Jede dort eingetragene Route hat automatisch das Präfix /api.

Beispiel:

java
Route::prefix('glossarium')->group(function () {
    Route::get('/vocab/index/search', [\App\Http\Controllers\API\Glossarium\GlossariumAPIVocabIndexController::class, 'search']);
    Route::get('/vocab/index/all/{wortart?}', [\App\Http\Controllers\API\Glossarium\GlossariumAPIVocabIndexController::class, 'all']);
    Route::get('/vocab/index/new', [\App\Http\Controllers\API\Glossarium\GlossariumAPIVocabIndexController::class, 'new']);
    ...

Daraus ergeben sich folgende Endpunkte:

  • GET /api/glossarium/vocab/index/search
  • GET /api/glossarium/vocab/index/all/{wortart?}
  • GET /api/glossarium/vocab/index/new

Index-Routes

Index-Routes geben immer mehrere Datensätze einer bestimmten Ressource an. Hier müssen einige Dinge wie Nomenklatur, Route-Schema, Traits und Interfaces beachtet werden (s.u.)

Controller

Controller werden in der Regel in einem eigenen Verzeichnis app/Http/Controllers/API abgelegt. Bitte Unterordner für jeden Bereich anlegen.

IndexController

Jeder Index-Controller muss das Interface app/Http/API/Interfaces/HermeneusAPIInterface.php implementieren. Darin sind notwendige Methoden festgelegt.

Rückgabeformat von Index-Controllern

Die API gibt standardmäßig folgende PHP-Datenstruktur zurück:

java
$ResponseData = [
    'data' => $PaginatedItems->items(), // Die zurückgegebenen Datensätze
    'pagination' => [
        'total' => $PaginatedItems->total(),
        'per_page' => $PaginatedItems->perPage(),
        'current_page' => $PaginatedItems->currentPage(),
        'last_page' => $PaginatedItems->lastPage(),
    ],
];

Diese Struktur muss vorher noch in JSON umgewandelt werden:

java
return response()->json($ResponseData);