Laravel Route Constraint
Herkese merhabalar bu yazımızda sizlerle beraber , laravel ile beraber route constraintleri kullanmaya çalışacağız. Peki nedir bu route constraint ?
Route constraint aslında ismindende anlaşıldığı gibi ilgili route ait tanımlamış olduğumuz kısıtlardır, örneğin 1 numaralı kullanıcının detayını getir dediğimizde aslında user/1/detail
diyor peki ya id yerine kullanıcımız user/bir/detail
yazarsa ne olacak ? Tabikide gereksiz bir sorgu çalışıp bizi bir maliyete sokacak işte bu ve benzeri durumlardan kaçınmak için route constraintlerden yararlanabiliriz, dilerseniz hemen başlayalım.
Proje Oluşturma
composer create-project laravel/laravel example-app
cd example-app
php artisan serve
Projemizi oluşturduktan sonra , routes\api.php
dosyasına gelip
Route::get('/users/{id}', function (Request $request, $id) {
return response()->json($id);
})->where(['id' => '[0-9]+']);
yukarıdaki gibi bir endpoint tanımlıyorum, ilgili rotaya yalnızca id’si regex([0–9]+) 0–9 arasında pozitif sayısal değerler olan istekler girebilir diyorum ve artık id yerine yazılacak herhangi bir string’i kontrol etme ihtiyacına yada gereksiz bir sorgulamaya gerek kalmıyor.
Son olarak her route için bu tanımı yapmamız kod ameleleği olacağından ötürü bu işi app\Providers\RouteServiceProvider.php
dosyasında aşağıdaki gibi bir config ile belirtip her rotanın sonuna where yazmaktan kurtuluyorum.
public function boot(){
....
Route::pattern('id', '[0-9]+');
}
Herkese İyi Çalışmalar Dilerim.