Menggunakan POST Dan GET Request Di Laravel

Pada tutorial sebelumnya kita telah membahas autentikasi, maka saat ini kita akan membahas Menggunakan POST dan GET Request Di Laravel, fungsi POST dan GET ini adalah menangkap data yang dikirim melalui atau yang ada di URL apabila menggunakan GET.

Untuk menangkap atau mengambil data apabila tidak menggunakan Laravel alias di PHP biasa maka kita mengenal $_GET dan $_POST untuk menangkap data yang dikirim, begitu juga di Laravel, namun caranya agak sedikit berbeda dan ada beberapa metode yang bisa kita gunakan nantinya.

Perbedaan yang paling mendasar apabila menggunakan PHP tanpa laravel dan menggunakan laravel, dimana data yang dikirim apabila menggunakan $_POST adalah asosiatif array sedangkan POST dan GET Request di laravel, data akan dikirim dalam bentuk object.

POST Request Di Laravel

Pada umumnya POST digunakan untuk menangani interaksi data melalui HTTP dengan metode Content-Type application/x-www-form-urlencoded atau multipart/form-data pada saat permintaan dikirim.

Nah kalau di laravel sendiri, mengirim data menggunakan POST akan ditangani oleh class Illuminate\Http\Request meskipun sebenarnya hampir sebuah interaksi data yang dikirim client menggunakan class tersebut termasuk cookie dan session.

Sebagai contoh kita akan membuat form sederhana, buatlah sebuah controller dengan nama RequestController dengan cara menjalankan perintah dibawah ini.

php artisan make:controller RequestController

Selanjutnya buka file RequestController yang berada di folder app/Http/Controllers, lalu didalm class tersebut tambahkan kode dibawah ini.

public function viewPostData()
{
    return view('request.post-data');
}

public function processPostData(Request $request)
{
    echo 'Nama: ' . $request->nama . '<br>';
    echo 'Email: ' . $request->email;
}

Selanjutnya buat lagi file dengan nama post-data.blade.php di folder resources/views/request, folder request dibuat manual, jika sudah tambahkan kode dibawah ini didalam file post-data.blade.php tersebut.

@extends('layouts.app')

@section('content')
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">Form Data</div>
                <div class="card-body">
                    <form action="{{ url('request/post-data') }}" method="POST">
                        <input type="hidden" name="_token" value="{{ csrf_token() }}">
                        <div class="form-group">
                            <label for="nama">Nama</label>
                            <input type="text" name="nama" id="nama" class="form-control">
                        </div>
                        <div class="form-group">
                            <label for="email">Email</label>
                            <input type="email" name="email" id="email" class="form-control">
                        </div>
                        <button type="submit" class="btn btn-primary">Kirim Data</button>
                    </form>
                </div>
            </div>
        </div>
    </div>
@endsection

Oia sebagai catatan disini penulis menggunakan Bootstrap, sehingga UI yang tampil di browser mungkin berbeda jika kamu tidak menggunakan Bootstrap.

Lalu yang terakhir bagian route, buka file web.php yang berada didalam folder routes, lalu tambahkan kode dibawah ini.

Route::get('request/post-data', [App\Http\Controllers\RequestController::class, 'viewPostData']);
Route::post('request/post-data', [App\Http\Controllers\RequestController::class, 'processPostData']);

Selanjutnya jalakan projek belajar laravel menggunakan perintah dibawah ini.

php artisan serve

Lalu akses di browser anda menggunakan alamat http://127.0.0.1:8000/request/post-data maka apabila sudah sesuai akan nampak seperti pada gambar dibawah ini.

post request di laravel

Jika sudah silahkan isi Nama dan Email menggunakan data apa saja, lalu klik tombol Kirim Data, maka di browser kamu akan menampilkan nama dan email seperti pada gambar dibawah ini.

Hasil post request laravel

Selanjutnya kita akan membahas metode GET data di Laravel.

GET Data Di Laravel

Biasanya $_GET di PHP native digunakan untuk mengambil nilai yang dikirim melalui URL atau bisa disebut query string, begitu juga di laravel, hanya saja caranya yang sedikit berbeda seperti yang awal penulis katakan.

Dalam banyak kasus biasanya parameter yang dikirim di URL bisa berupa token, token digunakan untuk autentikasi dan validasi apakah client di izinkan mengakses URL tertentu, bisa juga berupa parameter pencarian, ID, dan lain sebagainya.

Berikut ini mengambil parameter yang dikirim melalui URL (Query String) menggunakan metode GET di laravel. Masih pada controller yang sama yaitu RequestController, setelah itu tambahkan method dibawah ini.

public function viewGetData(Request $request)
{
    echo '<h3>Metode GET</h3>';
    echo 'Nama: ' . $request->nama . '<br>';
    echo 'Email: ' . $request->email;
}

Jika sudah buka kembali file web.php yang ada di folder routes, lalu tambahkan kode dibawah ini.

Route::get('request/get-data', [App\Http\Controllers\RequestController::class, 'viewGetData']);

Jika sudah jalankan url get-data tersebut di browser dengan mengakses URL dibawah ini apabila kamu menggunakan artisan serve.

http://127.0.0.1:8000/request/get-data?nama=Aris+Munandar&email=admin@bahasaweb.com

Jika sudah sesuai maka seharusnya akan tampil seperti dibawah ini.

get request di laravel

Kalau diperhatikan, kode viewGetData() dan processPostData() caranya sama aja, hanya saja metodenya yang berbebeda, selain itu kalau GET sebetulnya tanpa kamu menggunkan class Request juga bisa, yaitu dengan menggunakan helper seperti dibawah ini.

request()->get('nama_parameter');

Helper tersebut sama dengan class Request, hanya saja penggunaannya sedikit berbeda.

Mengakses Parameter Route Laravel

Selain kedua metode diatas, laravel juga memiliki cara untuk dapat mengirim parameter di URL melalui route yang nantinya bisa di akses data tersebut di controller. Sebagai contoh, buatlah method baru di RequestController dengan nama getRouteParameter(), seperti kode dibawah ini.

public function getRouteParameter($nama, $email)
{
    echo '<h3>Route Parameter</h3>';
    echo 'Nama: ' . $nama . '<br>';
    echo 'Email: ' . $email;
}

Lalu akses di browser dengan URL seperti dibawah ini apabila kamu menggunakan artisan serve.

http://127.0.0.1:8000/request/route-parameter/Aris%20Munandar/arismunandardev@gmail.com

Maka di browser akan tampil seperti dibawah ini.

Route parameter laravel

Demikian tutorial ini semoga bermanfaat bagi yang baru belajar Laravel.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.