Laravel Route İşlemleri

Laravel Route İşlemleri

Hepinize merhaba dostlarım :). Bu yazımda sizlere daha önceden başlamış olduğumuz laravel derslerinin bir konusu olan ve proje oluşturma işleminde çok önemli bir yere sahip olan konudan yani route sisteminden bahsedeceğim :). Route sistemi laravel üzerinde vazgeçilmez bir yere sahiptir. Çünkü gelen her istek get olsun post olsun veya patch olsun bizim belirttiğimiz istekler içerisinde çalıştırma işlemlerinde route yapısı çok büyük olanak sağlayacaktır :). Özellikle sektörde bir geliştiricinin projesinde 3000 adet route kullandığını bile görmüşlüğüm var :). Buradan da anlıyoruz ki laravel ile proje geliştirirken route işlemleri bizim için olmazsa olmaz :).O halde sözü daha fazla uzatmadan route işlemlerine girişimizi yapalım ama öncelikle laravel projemizi kuralım :) (laravel ortamını kurma ve çalıştırma hakkında takılan dostlarım buradan yazıma ulaşabilir)

Route Yapılarını İnceleyelim

Eveeeet artık laravel projemizi de oluşturduğumuza göre gelelim route yapılarına yavaş yavaş girişimizi yapalım :). Öncelikle dostlarım laravel üzerinde bir proje geliştirirken rotalarımızı yazacağımız dosya routes klasörü altındaki web.php dosyasıdır (rest api yazımı gerektirmeyen projelerde). Şimdi bu dosyayı açalım ve içerisini inceleyelim :)

<?php

Route::get('/', function () {
    return view('welcome');
});

?>

şeklinde bir kod bulunacaktır :). Kodumuzda bir istek ve bu istek geldiğinde çalışacak olan fonksiyon bulunuyor (fonksiyon önemli aman unutmayın :)). Burada route dosyasındaki bu kodumuzun diyor ki: "Kardeşim sen projeyi çalıştırdığında ben sana bir ilk olarak sana bir view döndüreceğim :)" diyor :). Biz şu anlık laravelde daha yolun başlarında olduğumuz için view ile çalışmayalım ve oradan bir metin dönmesini isteyelim :). Bunu nasıl yaparız diye merak ediyorsanız bu kodu aşağıdaki gibi düzenleriz

<?php

Route::get('/', function () {
     echo "MFSoftware Blog";
});

?>

şeklinde bir düzenlemeye geçirdik :). Uygulamamızı yenilediğimizde ekranımıza çıkacak sonuç

MFSoftware Blog

şeklinde bir çıktı olacaktır :). Şimdi gelelim ve route methodlarından kısaca bir bahsedelim ve daha sonra da örneklerimize kaldığımız yerden devam edelim :)

Method İsmiMethodun Görevi
Route::get()Web browser sayfasında ur den gelen isteği almaya yarar
Route::post()Web browser sayfasında get() methodu her url den gelen isteği değil de form üzerinden veri gönderme işlemlerinde (methodu post olan formlarda) kullanılır ve uzun lafın kısası post ile gelen verileri alma işleminde kullanılır
Route::match()Web browser sayfasında bizim belirlediğimiz istekler (get,post vs veya birden fazla methodlar) içerisine yazılarak projenin işlemesinde yardımcı olur 
Route::patch()Web browser sayfaslarında özellikle güncelleme yaptırma durumlarında bu method kullanılır
Route::delete()Web browser sayfalarında özellikle veri silme işlemleri yaptırma gerektiği durumlarda bu method kullanılır

şeklinde kodlarımızı yazdık :). Şimdi gelelim yavaştan yavaştan örneklerimizi yapmaya başlayalım

Route Yapılarıyla İlgili Örnekler

Arık route methodları ile ilgili aklımızda soru kalmadığına göre dostlarım gelelim artık route işlemleri ile ilgili örnekler yapmaya :). Heyecanlandığınızı seziyorum ve bunun farkındayım :). Sözümü daha fazla uzatmadan hemen ilk örneğime geçiyorum

Örnek 1: Örnek olarak hakkımda sayfası oluşturalım ve "hakkimda" seçeneği get ile geldiğinde bize bir metin bastıralım :). Gelin hemen onu kodlayalım 

<?php

Route::get('hakkimda',function (){
    echo "Benim Hakkımda Sayfam";
});

?>

şeklinde kodumuzu yazalım :). Projemizi çalıştıralım ve aşağıdaki gibi istek attığımızda

http://127.0.0.1:8000/hakkimda

bize geri dönecek olan sonuç

Benim Hakkımda Sayfam

şeklinde olacaktır :).

Örnek 2: Bu örneğimizde ise "veriler" isimli bir rotamız olsun ama "post" methodu ile çalışsın. Gelelim hemen onu da kodlayalım

<?php

Route::post('veriler',function (){
    echo "Verilerimiz Geldi";
});

?>

şeklinde kodumuzu yazdık :). Şimdi gelelim biz bu rotamızı url kısmına aşağıdaki gibi yazarsak

http://127.0.0.1:8000/veriler

şeklinde url den istek attığımızda bize gelecek olan sonuç

The GET method is not supported for this route. Supported methods: POST.

şeklinde oluyor :). Yani diyor ki "Kardeşim senin bu istek attığın rota post methodu ile çalışıyor :). Sen get ile istek atıyorsun bunu çalıştıramam :). Bunu çalıştırmam için bana post isteği at :)" şeklinde bir uyarı veriyor :). Peki biz bunu nasıl çalıştırırız diye aklımıza soru da gelmiyor değil :). Bunun için POSTMAN isimli uygulamayı indirip bilgisayarımıza ve aşağıdaki gibi bir istek atıyoruz ve sonuç çıktısı da yine aşağıdaki gibi bizim karşımıza geliyor :)

Resim 1: https://prnt.sc/112xpge

şeklinde ekranımıza bastırılıyor :). İşte http den atamadığımız post,delete,patch işlemlerini POSTMAN uygulaması aracılığıyla rahat bir şekilde ayarlayabiliyoruz :). Gelelim bir diğer örneğimize :)

Örnek 3: Bu örneğimizde de get ve post methodlarının her ikisiyle de çalışacak olan bir method yazalım. Buna "coklu" ismini verelim. Hemen kod kısmına gidip

<?php

Route::match(["get","post"],"coklu",function (){
    echo "Çoklu Route Çalıştı :)";
});

?>

şeklinde kodumuzu yazdık :). Burada artık get ve post ile gönderilen "coklu" isteği rahat bir şekilde çalışacak ve ekranımıza başarılı bir şekilde çıktı verecektir :). Gelin hemen bunların deneyelim :). Web browser sayfasını açıp

http://127.0.0.1:8000/coklu

isteğini attığımızda ekranımıza çıktı olacak gelen sonuç

Çoklu Route Çalıştı :)

olacaktır :). Aynı şekilde bunu POST ile gönderecek olursak geleceğiz POSTMAN uygulamasına ve aşağıdaki gibi bir istek yapacağız

Resim 2: https://prnt.sc/112xzxu

şeklinde bize çıktı verilecektir dostlarım :). Bu örnek de sorunsuz bir şekilde anlaşıldığına göre gelelim diğer bir örneğe

Örnek 4: Bu örneğimizde özellikle veri güncelleme işlemlerinde kullanılan patch methoduyla çalışalım. Güncelleme işlemi için "guncelle" şeklinde bir isteğimiz olsun :). O halde gelelim hemen kodlarımızı yazmaya başlayalım

<?php

Route::patch("guncelle",function (){
    echo "Veri Güncellenecek";
});

?>

şeklinde kodumuzu yazdık. Daha sonra web browser sayfamızı açalım ve

http://127.0.0.1:8000/guncelle

şeklinde isteğimizi yazdık. Bunu web browser da yazınca direkt bize hata verecektir. O hata ise şudur

The GET method is not supported for this route. Supported methods: PATCH.

burada ise bize çıkan hata şudur: "Bu route patch ile çalışırken sen get ile çalıştırmaya çalışıyorsun dostum :). Ben bu şekilde çalışamam aman dikkat :)" uyarısını veriyor. Biz de bunu POSTMAN uygulamasında rahatlıkla çalıştırabiliriz sonucu görmek için. Bunu da aşağıdaki resme bıraktım :)

Resim 3: https://prnt.sc/112yuyo

şeklinde görüldüğü gibi POSTMAN üzerinden rahatlıkla PATCH isteğini gönderip sonucu ekranımıza bastırdık :). Bu örneğimizi anladığımıza göre artık gelelim diğer bir örneğimize :)

Örnek 5: Bu örneğimizde ise silme işlemlerinin vazgeçilmez rotasıyla ilgili bir işlem yapalım. Burada ise "sil" isminde bir isteğimiz olsun ve bu isteği karşılayacak olan route komutuz "delete" methoduyla yakalasın. Gelin bunu da hızlı bir şekilde koda dökelim :)

<?php
 
Route::delete("sil",function (){
    echo "Veri Silindi";
});

?>

şeklinde kodumuzu yazdık. Bunu web browserimize gelip url kısmına

http://127.0.0.1:8000/sil

kodunu yazarsak bize aşağıdaki gibi bir hata verir:

The GET method is not supported for this route. Supported methods: DELETE.

burada da diğer örneklerden de anlayacağınız üzere benzer bir hata vardır :). Hatada bize şu bildiriliyor: "Dostum sen DELETE methodu kullanarak bir rota oluşturdun ama bunu da GET isteği ile kullanmaya çalışıyorsun :). Aman dikkat et :)" uyarısı bize geliyor. Artık biz de rota dosyasını sürekli rahatsız etmeyelim hep GET isteği atıyoruz :). Şimdi gelelim ve bunu POSTMAN üzerinden deneyelim. Uygulamamızı açıp aşağıdaki şekildeki gibi istek attığımızda bize sonuç başarılı bir şekilde dönecektir

Resim 4: https://prnt.sc/1130kb8

şeklinde ekranımıza başarılı bir şekilde çıktı bastırıldı dostlarım :). Şimdi bu örneklerimizi yaptığımıza göre artık gelelim route kullanımında en güzel ve en sık kullanılan kısma :)

Route Parametre Gönderimi

Eveeeet artık route kısmının vazgeçilmez konusundan birisindeyiz :). Route parametrelerini kısaca tanımlayacak olursak dostlarım hemen hemen her projede kullanılan, güncelleme, silme ve görüntüleme işlemlerinde gelen parametreye göre veri tabanı işlemleri yapmamızda çok büyük fayda sağlar. Örnek vermek gerekirse biz 3 id li bir örneği silmek istiyoruz varsayalım. Bu 3 id sini route üzerinden gönderip veri tabanında sorgulayıp sildiririz temel olarak bu şekilde işlem yaptırırız :). Akıllarda şu soru yer edindiğini seziyorum:

Peki iyi hoş da hocam bunu route üzerinde nasıl kullanabiliriz ?

Çözüm çok basit dostlarım :). Gelelim bir örnek route komutu oluşturalım

<?php

Route::get("{parametre}",function ($parametre){
    echo $id;
});

?>

şeklinde komutumuzu yazdık :). Dikkat etmişseniz dostlarım gelen parametreyi fonksiyon içerisinde yakalayıp daha sonra da bunu ekrana bastırma işlemini gerçekleştirmesini söyledik. Örnek olarak "mfsoftware" isimli bir parametre atalım :). Gelelim web browserimizde url kısmına ve

http://127.0.0.1:8000/mfsoftware

şeklinde bir istek yapalım. Bize geri dönecek olan sonuç aşağıdaki gibi olacaktır

mfsoftware

şeklinde bir ekran çıktısı bizi karşılayacaktır :). Şimdi yukarıda demiştim ya bu parametreyi fonksiyon içerisinden yakalıyoruz diye :). Yakalamadan yazarsak kodu ve çalıştırdığımızda ne olur diye merak ediyorsanız gelin size sonucu göstereyim :). Kodumuzda aşağıdaki gibi ufak bir değişiklik yapalım

<?php

Route::get("{parametre}",function (){
    
});

?>

şeklinde kodumuzu yazdık :). Şimdi gelelim yukarıdaki isteğin aynısını browser a yaptığımızda bize gelecek olan sonuç:


şeklindedir :). Çünkü parametre gönderdik ama hiçbir şekilde yakalayamadık :). İşte fonksiyon içerisinde parametreyi yakalamamız bu derece önemli :)

Şimdi size bir şey daha göstereceğim :). Parametre atmazsak bizi nasıl bir sonuç bekliyor diye merak ettiğinizi biliyorum :). Bunu gelin size göstereyim atmazsak ne oluyor nasıl bir sonuç bizi karşılıyor :). Web browserimize gelip

http://127.0.0.1:8000/

şeklinde bir istekte bulunduğumuzda ve hiçbir parametre göndermediğimizde bizim karşımıza çıkacak olan sonuç aşağıdaki şekildeki gibidir :)

Resim 5: https://prnt.sc/113131f

şeklindedir. Yani herhangi bir parametre bulamadı ve bize direkt olarak "404 | Not Found" uyarısını verdi :). Peki biz şimdi bunu kullanıcıdan zorunlu olarak parametre girmesini istemeyeceğimiz durumlar olabilir :). Bunun önüne nasıl geçebiliriz diye soruyorsanız kod kısmına gelip

<?php

Route::get("{parametre?}",function ($parametre=null){
    echo $parametre;
});

?>

şeklinde kodumuzu düzenlememiz lazımdır dostlarım :). Şimdi bizim burada yaptığımız işlemlerden birisi "{parametre?}" diyerek bu parametrenin zorunlu olmadığını belirttik, daha sonra da "$parametre = null" yazarak bu parametre gelmediğinde default olarak null değerini al dedik :). Bu kısmı da yaptığımıza göre artık gelelim bu kodu çalıştırmaya :). Web browser sayfamızı açalım ve

http://127.0.0.1:8000/

şeklinde bir istekte bulunduğumuzda ekranımıza artık "404 | Not Found" ekranı yerine


şeklinde bir boş sayfa gelecektir :). Artık her şey tamam olduğuna göre gelelim yaş hesaplayıcı bir route yazalım :).

Bir parametre alalım bu doğum tarihimiz olsun. Bu yıldan doğum tarihimizi çıkartarak yaşımızı ekrana bastıralım :). Hemen kodumuzu açalım ve

<?php

Route::get("yas/{dy?}",function ($dy=null){
    if ($dy==null){
        echo "Lütfen Doğum Yılınızı Giriniz";
    }else{
        echo "Yaşınız: ".intval(date("Y")-$dy);
    }
});


?>

şeklinde kodumuzu yazalım. Daha sonra web browser sayfamızı açalım ve

http://127.0.0.1:8000/yas/

şeklinde bir istek atalım :). Bize geri dönecek olan sonuç

Lütfen Doğum Yılınızı Giriniz

şeklinde ekranımıza bir uyarı verdirdik :). Şimdi ben kendi doğum yılımı yazacağım yani aşağıdaki şekildeki gibi

http://127.0.0.1:8000/yas/1999

istek gönderirsem bana dönecek olan sonuç

Yaşınız: 22

şeklinde ekranımıza basılacaktır :).


Eveeet dostlarım :). Bu yazımda sizlere laravel framework'ü üzerinde route yapıları nedir, nasıl kullanılır dilim döndüğünce anlatmaya çalıştım :). Umarım faydalı olmuşumdur. Eksik veya hatalı bir anlatım yapmışsam benimle iletişime geçmekten çekinmeyin :). Konu başlarda biraz karmaşık ve zor gelebilir anlıyorum ben de laravele ilk geçişte bu konuda baya zorlanmıştım. Bu durumda sizlerden yapmanızı istediğim şey her yazımda da dediğiim gibi "İstikrarlı ve Azimli olmalı, bolca pratik yapmalısınız :)". Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizin için kaçınılmaz olacaktır :)

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :) 

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıTelegram ChatBot Oluşturma
Sonraki YazıNode.js MongoDB Bağlantısı
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz