Lumen HTTP Routing

Basic Routing

Routing adalah entripoint pada aplikasi webservice atau disebut juga endpoint dimana routing inilah yang akan menjadi link/URL pada aplikasi webservice kita. untuk membuat routing pada aplikasi lumen, terdapat pada file routes/web.php, berikut contoh dasar atau senderhana untuk membuat route :

// Get
$route->get('foo', function(){
    return 'Hello World';
});

//Post 
$route->post('foo', function(){
    return 'Hello Lumen';
});

Lumen menyediakan beberapa method untuk membuat route :


$route->get($uri,$callback);
$route->post($uri,$callback);
$route->put($uri,$callback);
$route->patch($uri,$callback);
$route->delete($uri,$callback);
$route->option($uri,$callback);

Route With Parameter

Required Parameter

Lumen jugan menyediakan route dengan path variable atau paramater


$route->get('user/{id}', function($id){
    return 'Hello World '.$id;
});

//multiple parameter
$route->get('post/{id}/comments/{commentsId}', function($id,$commentsId){
    //
});

Optional Parameter

Optional paramater adalah tipe paramater yang bersifat optional atau route akan tetap bisa kita akses ketika paramater tidak kita isi:

$route->get('user[/{id}]', function($id){
    return 'Hello World '.$id;
});

Regular Expression Constraints

Regular Expression Constraints adalah route yang parameternya bisa kita buat atau tambahkan pola tertentu (regex):

$route->get('user/{name:[A-Za-z]}', function($name){
    return 'Hello World '.$name;
});

Named Routes

Penggunaan nama pada route memungkinkan pembuatan URL atau pengalihan untuk rute tertentu.

$route->get('user',['as'=>'user', function(){
    //
}]);

atau kita bisa membuat route yang terhubung dengan Controller

$route->get('user',['as'=>'user','use'=>'UserController@show']});

Generating URLs To Names Routes

Setelah kita membuat nama untuk rute tertentu, Kita dapat menggunakan nama rute untuk membuat URL atau melakukan redirect melalui fungsi rute global:

$url = route('profile');

// Redirect url
return redirect()->route('profile')

redirect route / URL dengan paramater

$route->get('user/{id}/profile',['as'=>'profile', function($id){
   //
}]);


$url = route('profile',['id'=>1]);

Routes Groups

Grup rute memungkinkan kita untuk berbagi atribut rute, seperti middleware atau namespaces, di sejumlah besar rute tanpa perlu menentukan atribut tersebut pada setiap rute. Atribut bersama ditentukan dalam format array sebagai parameter pertama ke metode $router->group.

Middleware

$router->group(['middleware' => 'auth'], function () use ($router) {
    $router->get('/', function () {
        // Uses Auth Middleware
    });

    $router->get('user/profile', function () {
        // Uses Auth Middleware
    });
});

Namespaces

Kasus penggunaan umum lainnya untuk grup rute adalah menetapkan Namespaces PHP yang sama ke group Controllers.

$router->group(['namespace' => 'Admin'], function() use ($router)
{
    // Using The "App\Http\Controllers\Admin" Namespace...

    $router->group(['namespace' => 'User'], function() use ($router) {
        // Using The "App\Http\Controllers\Admin\User" Namespace...
    });
});

Routes Prefix

Kita bisa membuat group URLs, contoh kita membuat beberapa route dalam group admin:

$router->group(['prefix' => 'admin'], function () use ($router) {
    $router->get('users', function () {
        // Matches The "/admin/users" URL
    });
});

Group prefix juga bisa kita tambahkan sebuah paramater

$router->group(['prefix' => 'accounts/{accountId}'], function () use ($router) {
    $router->get('detail', function ($accountId) {
        // Matches The "/accounts/{accountId}/detail" URL
    });
});

 

 

References :

  1. https://lumen.laravel.com/

hyvercode

Leave a Reply

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