iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0
自我挑戰組

從0開始-30天摸索laravel系列 第 7

DAY7: 今晚再來點基礎 Routing

今天再繼續補充一下路由的部分!

我們也可以在路由中管理HTTP 請求(HTTP methods)

何謂HTTP 請求? MDN上是這樣說的:

HTTP 定義了一組能令給定資源,執行特定操作的請求方法(request methods)。他們儘管屬於名詞,但也能稱為 HTTP 動詞。每個方法都有不同的語意,不過也有些共享的相通功能,像是safe、idempotent、cacheable。

在一個路由允許GET及POST

Route::match(array('GET', 'POST'), '/', function()
{
    return 'Hello World';
});

在一個路由中允許所有 HTTP請求

Route::any('foo', function()
{
    return 'Hello World';
});

選擇性路由參數(設立 預設值)

Route::get('user/{name?}', function ($name = null) {
    return $name;
});

Route::get('user/{name?}', function ($name = 'John') {
    return $name;
});

此時這時候在瀏覽器中輸入:
http://localhost:8000/user/
以及
http://localhost:8000/user/Tom

可以看看顯示出的畫面是如何

路由命名
可以替每條路由取一個名字,這樣方便呼叫也方便理解該路由的作用

Route::get('user/profile', function () {
    //
})->name('profile');

Route::get('user/profile', 'UserController@showProfile')->name('profile');

如何呼叫使用該命名路由呢~
$url = route('profile');

另外路由一多之後難免會有管理上的問題,所以laravel在設計上也有許多為了路由管理所做的設定,但由於真的不少,礙於時間上,我練習就先忽略了,想說先記錄一下有那些東西,有需要再拿來用!

路由如果要使用middleware

Route::group(['middleware' => 'auth'], function () {
    Route::get('/', function ()    {
        // Uses Auth Middleware
    });

    Route::get('user/profile', function () {
        // Uses Auth Middleware
    });
});

命名空間

Route::group(['namespace' => 'Admin'], function () {
    // Controllers Within The "App\Http\Controllers\Admin" Namespace
});

如果路由一多的話,也支援群組化的感覺來組織結構一下

Route::group(['prefix'=>'post'], function(){
    Route::get('/', 'HomeController@index');
    Route::get('create', 'HomeController@create');
    Route::post('/', 'HomeController@store');
    Route::get('{id}', 'HomeController@show');   
    Route::delete('{id}', 'HomeController@destroy');
});

例如

Route::group(['prefix'=>'classA'], function(){
	Route::get('user/{name?}', function ($name = 'Tom') {
		return $name;
	});
	Route::get('id/{id?}', function ($id = '123') {
		return $id;
	});

});

此時可以在瀏覽器中輸入
http://localhost:8000/classA/id
http://localhost:8000/classA/user
這樣是不是感覺就更乾淨整齊啦!!!!!!!!!

也可以針對路由參數作管控,如下面範例:

Route::get('user/{name}', function ($name) {
    //
})->where('name', '[A-Za-z]+');

參考資料:
https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Methods


上一篇
DAY6: 基礎 Routing
下一篇
DAY8: Artisan 指令列
系列文
從0開始-30天摸索laravel31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言