在laravel中 route的使用相當重要,畢竟是整個專案的入口。
以前寫原生PHP時沒有用route的習慣,整個檔案的路徑都暴露在URI之中
使用route可以將真實的檔案路徑隱藏,可以輕鬆的將request導向需要的某個controller中的某個function,相當好用。
routes 資料夾內容如下
其實小弟我只用過兩個,api.php和web.php
其實哪個都可以用,只是做個分類而已,一般開發可使用web.php,若是純開api我會使用api.php。
範例:
Route::get('/', function () {
return view('welcome');
});
說明:
get :
使用的method為get。最常見的method有 get、post、put、delete。我的專案是遵循 restful api的型式,這個之後會出一篇文章專門講解。這邊要注意的是,除了指定的method一律不能過,若是使用get 以外的method,laravel會回報錯誤。
'/'
method的()裏面,第一個參數為路徑PATH。若是依照範例,也就是URL後面路徑啥都沒加,網址輸入127.0.0.1:8000/
便會走到這個route。這邊可以自由的設計。
例如,設定/home
就會到首頁之類的。
request 去向
第二個參數則是選擇要導到哪裡,範例中function () {return view('welcome');}
表示要導到view中的welcome.blade.php檔案(laravel首頁),下圖為專案中的views
但是我認為不常這麼做,通常是route->controller->view這個流程,你可能覺得多此一舉,幹嘛非要繞到controller那裡,但我個人是認為所有view都統一交給controller管理比較好。
下面給個範例:
Route::get('/', TodoController@index);
就像這樣,將request導至TodoController中名為index的function。
以上的範例是在web.php中的laravel新建立時就自帶的,小弟我平常都是使用api.php這邊,用法一樣,只是路徑要多加上api/。例如,下面這個範例是我簡易trello專案中的其中一支,寫在api.php檔案內
Route::post('/userToken', 'api\GetToken@login');
這時候我的網址就必須打127.0.0.1:8000/api/userToken
才會導到我要的controller內喔。
而我的controller建立在app/Http/Controllers/api/GetToken.php
裏面,因此路由的第2個參數要打api\GetToken@login
,這樣才會找到我的controller GetToken裡的login這個function。
注意斜線是\
(反斜線)。
route設定就講到這邊吧,其他進階的用法之後會再講到的。
參考:https://laravel.com/docs/7.x/routing