## Getting Started
Install the package via Composer:
```bash
composer require vendor/api-gateway-package
Publish the configuration (if needed):
php artisan vendor:publish --provider="Vendor\ApiGatewayPackage\ApiGatewayServiceProvider"
Register the service provider in config/app.php under providers.
First Use Case:
Listen to the new api_gateway.endpoint.request and api_gateway.endpoint.response events to intercept and modify API gateway requests/responses. Example:
use Vendor\ApiGatewayPackage\Events\EndpointRequestEvent;
use Vendor\ApiGatewayPackage\Events\EndpointResponseEvent;
Event::listen(EndpointRequestEvent::class, function (EndpointRequestEvent $event) {
// Modify request data before it reaches the gateway
$event->request->merge(['custom_header' => 'value']);
});
Event::listen(EndpointResponseEvent::class, function (EndpointResponseEvent $event) {
// Transform response data
$event->response->setData(['modified' => true]);
});
Leverage the new events for:
Pair with Laravel’s built-in Event facade or use a package like spatie/laravel-event-sourcing for advanced workflows.
Event::listen(EndpointRequestEvent::class, function ($event) {
\Log::info('API Gateway Request', [
'endpoint' => $event->endpoint,
'data' => $event->request->all(),
]);
});
Event::listen(EndpointResponseEvent::class, function ($event) {
\Log::info('API Gateway Response', [
'endpoint' => $event->endpoint,
'status' => $event->response->status(),
]);
});
api_gateway.endpoint.request fires before the gateway processes the request.api_gateway.endpoint.response fires after the gateway generates a response.$event->request or $event->response in a way that triggers another event.Event::until() or Event::unless() to scope listeners to specific endpoints:
Event::listen(EndpointRequestEvent::class, function ($event) {
// Only run for '/admin/*' endpoints
})->until(fn ($event) => str_starts_with($event->endpoint, '/admin'));
php artisan event:list.config/app.php).api_gateway.endpoint.error).
NO_UPDATE_NEEDED (for prior assessment, as this is the first version).
How can I help you explore Laravel packages today?