Laravel ile yeni bir proje oluşturduğumuz zaman Illuminate/Http/Request sınıfı uygulamamız tarafından gönderilen HTTP isteğini işler ve buna göre işlemler yapmamız için olanak sağlar.
İstek İle Erişim
Http isteklerini projemizde kullanmak için Illuminate/Http/Request sınıfını kullanmak istediğimiz dosyaya çağırmamız gerekmektedir. Gelen HTTP isteği laravel service container tarafından sayfaya otomatik olarak enjekte edilecektir.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function store(Request $request) { $name = $request->input('name'); //formdan gelen verileri böyle alıyoruz. } }
Ayrıca rotalarda da bu işlemi gerçekleştirebiliriz.
use Illuminate\Http\Request; Route::get('/', function (Request $request) { // });
Dependency Injection Ve Rota Parametreleri
Dependency injection kelime anlamı olarak bağımlılık enjeksiyonu demektir.
Bunun anlamı şudur. Request sınıfı kullandığımız fonksiyona parametre göndermek istersek, fonksiyonun ilk parametresi Request sınıfı olmak zorundadır. Aksi takdirde program hata verecektir.
web.php dosyamız:
<?php use App\Http\Controllers\UserController; Route::put('/user/{id}', [UserController::class, 'update']);
UserController.php dosyamız:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; //Bunu her zaman dahil etmemiz gerekmektedir. class UserController extends Controller { public function update(Request $request, $id) { //$id parametresi request sınıfından sonra tanımlanmak zorundadır. } }
Request Path ve Method
Illuminate\Http\Request sınıfı gelen HTTP isteğini incelemek için bir çok yöntem sağlar. Bu işlemleri yapmak için Symfony\Component\HttpFoundation\Request sınıfından yardım alır.
HTTP İsteğinin Yolunu Öğrenme
path() metodu, isteğin url segmentlerini bize döndürür.
Mesela https://bilisim34.net/hakkimizda sayfasına istek atarsak path metodu bize /hakkimizda değerini döndürür.
Kullanım şekli şöyledir:
$uri = $request->path();
HTTP İsteğinin Rota Bilgilerini İnceleme
is() metodu gelen http isteğinin belirlediğiniz bir yolla eşleşip eşleşmediğini kontrol etmenize olanak sağlar. Burada * karakterini tüm rotaları belirtmek için kullanırız.
<?php if ($request->is('admin/*')) { // }
İstek URL’ini Alma
Sayfaya atılan HTTP isteğinin url’ini almak için url() veya fullUrl() metodunu kullanabiliriz.
Temel kullanımı şu şekildedir.
<?php use Illuminate\Http\Request; Route::get('/', function (Request $request) { $url = $request->fullUrl(); $url2 = $request->url(); });
Eğer HTTP isteğine parametre göndermek istiyorsak fullUrlWithQuery() metodunu kullanırız.
<?php use Illuminate\Support\Facades\Route; use Illuminate\Http\Request; Route::get('/', function (Request $request) { return $request->fullUrlWithQuery([ 'param' => "Zafer", ]); });
HTTP İsteklerinin Türünü Öğrenme
isMethod() metodu ile gelen isteklerin türünü öğrenebiliriz. method() metodu ise direk isteğin türünü geri döndürür.
$method = $request->method(); if ($request->isMethod('post')) { // }
Request Headers
Bazı durumlarda istek göndermek için bir takım güvenlik önlemleri almamız gerekebilir. Bu durumlarda headers parametresi ile istek attığımız yere veri gönderip bunun doğruluğunu kontrol etmek isteyebiliriz. Http isteğinde headers kısmı yoksa boş döndürülür. Eğer headers kısmı boşsa 2. parametre olarak kendimiz bir headers değeri atayabiliriz.
$value = $request->header('X-Header-Name'); $value = $request->header('X-Header-Name', 'default');
hasHeader() metodu ile isteğin belli bir başlık içerip içermediğini kontrol edebiliriz.
if ($request->hasHeader('X-Header-Name')) { // }
Laravel ile Ip adresini Öğrenme
ip() metodu ile uygulamanıza istek atan bilgisayarın ip adresini öğrenebilirsiniz.
$ipAddress = $request->ip();
HTTP İstekleri İle İçerik Türlerini Kontrol Etme
getAcceptableContentTypes() metodu ile Laravel’in kabul ettiği içerik tiplerini ekrana basabiliriz.
$contentTypes = $request->getAcceptableContentTypes();
accept() metodu ile laravelin kabul etmesini istediğimiz istek türlerini bildirebiliriz.
if ($request->accepts(['text/html', 'application/json'])) { // ... }
Gelen isteğin json olup olmadığını kontrol etmek için exceptJson() metodunu kullanabilirsiniz.
if ($request->expectsJson()) { // ... }