今天再繼續補充一下路由的部分!
我們也可以在路由中管理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