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:
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/searchGET /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:
$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:
return response()->json($ResponseData);