FilamentPHP von API-Requests ausschließen
Wir zeigen, wie Sie in Laravel-Projekten, die ausschließlich eine API anbieten, das Laden von FilamentPHP bei API-Requests verhindern.
Warum sollte man das machen? Zwei Gründe: Es erhöht die Stabilität und Verfügbarkeit Ihrer API und verbessert die Performance.
So verhindern Sie, dass FilamentPHP bei einem API-Request geladen wird
Im Filament AdminPanelProvider fügen Sie die folgende register() Methode ein, die dafür sorgt, dass bei einem API-Request das Panel nicht geladen wird:
class AdminPanelProvider extends PanelProvider
{
public function register(): void
{
if (request()->is('api/*')) {
return;
}
parent::register();
}
public function panel(Panel $panel): Panel
{
// dd('test');
return $panel
->default()Language:php
Warum ist das sinnvoll?
Performance
Wenn FilamentPHP im Projekt installiert ist, kann man davon ausgehen, dass es zur Administration genutzt wird. Um die API-Requests zu bearbeiten, wird es nicht benötigt und muss daher nicht geladen werden. Das spart Ressourcen. Um dies zu verdeutlichen, habe ich 500 leere User-Ressourcen angelegt und die Response-Time gemessen:
Mit 500 Filament-Ressourcen: ~107ms/request
Komplett ohne Filament: ~19ms/request
Stabilität
Wir alle machen mal Fehler. Sollte sich ein Fehler ins System einschleichen, der im Adminpanel oder einer seiner Ressourcen liegt, können wir so ausschließen, dass die Verfügbarkeit der API eingeschränkt wird.