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()) {
    // ...
}

 

Shares:

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir