Accessing Request
Untuk mengakses nilai pada sebuah request kita bisa menggunakan Dependency Injection pada sebuah method yaitu dengan melakukan injection class Illuminate\Http\Request pada method yang kita buat. Dependency ini sudah include pada framework lumen sehingga kita bisa menggunakannya dengan cara memanggil use Illuminate\Http\Request.
<?php
namespace App\Services;
use Illuminate\Http\Request;
class UserController
{
/**
* @param $name
* @return mixed
*/
public function getName(Request $request){
return 'My Name is :' .$request->name;
}
}
pada script diatas kita mengambil nilai name dari request baik itu method dengan POST/GET.
Request Param ( Query Parameter)
Request query param adalah request yang biasanya mengunakan method GET yaitu dengan cara mengirim nilai request pada parameter URL seperti http://localhost:8000/randomcode?name=alfazalea&age=90, dimana pada request ini kita mengirimkan sebuah parameter dengan variable name. Request param / query paramater diawali dengan(?) di akhir URL dan menggunakan (&) untuk menambah paramater selanjutnya.
Contoh sederhana bagaimana melakukan request dan mendapatkan nilai pada sebiah request :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ExampleController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}
public function index()
{
return response(['message' => 'Hello Word'], 200);
}
/**
* @param Request $request
* @return string
* @throws \Exception
*/
public function getRandomCode(Request $request)
{
return 'Your name is : ' . $request->name . ' and your code : ' . random_int(100000, 999999);
}
}
Mapping class controller yang telah kita buat pada route
$router->get('/randomcode','ExampleController@getRandomCode');
Running aplikasi / project dan akses melalui browser dengan menambahkan name pada query param seperti berikut :

Request Path Variable
Sama seperti Request Param, Request Path Variable juga bisa mengirimkan request dengan cara menyisipkan atau menambahkan value yang akan dikirim pada URL. Perbedaanya nilai yang akan kita kirim menjadi sebuah atau bagian dari URL itu sendiri ‘ http://localhost:8000/randomcode/123 ‘, Request Path Variable juga bisa kita gunakan bersamaan dengan Request Param seperti ‘http://localhost:8000/randomcode/123?name=alfazalea&age=90‘, dimana path 123 adalah kode user yang akan kita kirim sedangkan paramater berikutnya adalah query paramater yang akan kita kirim juga.
Contoh sederhana cara membuat Request Path Variable bersamaan dengan Request Param:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ExampleController extends Controller
{
/**
* @param Request $request
* @return string
* @throws \Exception
*/
public function getUserById($id,Request $request)
{
return 'ID :'.$id.' Your name is : ' . $request->name . ' and your age : ' . $request->age;
}
}
Mapping class controller yang telah kita buat pada route
$router->get('/userby/{id}','ExampleController@getUserById');
Running aplikasi / project dan akses melalui browser dengan menambahkan name dan age pada query param seperti berikut :

atau kita bisa menggunakan tools seperti Postman https://www.postman.com/downloads/

Request Body/Payload
Request body/payload adalah request yang mengirimkan request pada body/payload, request ini mendukung pengiriman beberapa type data seperti raw,binary,form-data,GrapQL dll.
Kita akan membuat contoh sederhana bagaimana melakukan request dengan mengirimkan type raw berupa JSON :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ExampleController extends Controller
{
/**
* @param Request $request
* @return string
* @throws \Exception
*/
public function calculate(Request $request)
{
$total = $request->amount * $request->price;
return 'Total amount = '.$total;
}
}
Mapping class controller yang telah kita buat pada route dengan method POST
$router->post('/calculate','ExampleController@calculate');
Running aplikasi / project dan request melalui postman

The lumen tutorial source code can be downloaded at github alfazalea/lumen-tutorial
Reference :