Middleware

The toolkit ships with two middleware classes for common API needs.

ForceJsonApiResponse

Forces all responses to use the application/vnd.api+json content type, as required by the JSON:API spec.

use BlueBeetle\ApiToolkit\Http\Middleware\ForceJsonApiResponse;

Route::middleware([ForceJsonApiResponse::class])->group(function () {
    Route::apiResource('products', ProductController::class);
});

This ensures every response from your API routes has the correct content type header, even for error responses.

DetectLanguage

Reads the Language header from the request and sets the application locale accordingly.

use BlueBeetle\ApiToolkit\Http\Middleware\DetectLanguage;

Route::middleware([DetectLanguage::class])->group(function () {
    Route::apiResource('products', ProductController::class);
});

The middleware checks the header value against config('app.valid_locales'). If the locale is valid, it sets it. Otherwise, it falls back to config('app.fallback_locale').

// config/app.php
'valid_locales'    => ['en', 'pt', 'es'],
'fallback_locale'  => 'en',

Example request:

GET /api/products
Language: pt

This sets app()->setLocale('pt') for the duration of the request.