7.
開始定義系統各項功能
一、定義路由
- 這個單元先看看就好,不用實作,只是先列出總理,方便參考用。
- 定義各項功能基本上就是定義路由,白話一點就是說,網址輸入什麼,就去執行什麼動作,出現什麼畫面。
- 建議先看一下「簡明RESTful API設計要點」
- 底下的「資源」(resource)通常代表一個資料表的意思(當然不盡然如此,只是這樣想比較簡單),例如:product、user...等。以下寫法範例,「資源」以「product」為例:
動詞 |
網址路徑 |
行為 |
路由名稱 |
一般路由寫法 |
有控制器的路由寫法 |
GET |
/資源 |
index
列表
|
資源.index |
Route::get('/product', function () {
return view('index');
})->name('product.index');
|
Route::get('/product', 'ProductController@index')
->name('product.index'); |
GET |
/資源/create |
create
新增
|
資源.create |
Route::get('/product/create', function () {
return view('create');
})->name('product.create');
|
Route::get('/product/create', 'ProductController@create')
->name('product.create'); |
POST
(支援 CSRF保護)
|
/資源 |
store
儲存
|
資源.store |
Route::post('/product', function () {
return view('store');
})->name('product.store'); |
Route::post('/product/store', 'ProductController@store')
->name('product.store'); |
GET |
/資源/{id} |
show
顯示一筆
|
資源.show |
Route::get('/product/{id}', function () {
return view('show');
})->name('product.show'); |
Route::get('/product/{id}', 'ProductController@show')
->name('product.show'); |
GET |
/資源/{id}/edit |
edit
編輯
|
資源.edit |
Route::get('/product/{id}/edit', function () {
return view('edit');
})->name('product.edit'); |
Route::get('/product/{id}/edit', 'ProductController@edit')
->name('product.edit'); |
PUT/PATCH
(支援 CSRF保護)
|
/資源/{id} |
update
更新
|
資源.update |
Route::patch('/product/{id}', function () {
return view('update');
})->name('product.update'); |
Route::patch('/product/{id}', 'ProductController@update')
->name('product.update'); |
DELETE
(支援 CSRF保護)
|
/資源/{id} |
destroy
刪除
|
資源.destroy |
Route::delete('/product/{id}', function () {
return view('destroy');
})->name('product.destroy'); |
Route::delete('/product/{id}', 'ProductController@destroy')
->name('product.destroy'); |
- 搭配「動詞」+「路徑」,可以執行不同「行為」
- 其中,盡量用符合的動詞和路徑,「行為」的命名也盡量和上面相同,如此,未來可以簡化許多程式。
- 例如:我們在 新增管理買家的路由 這個單元中,有加入一行
$router->resource('users', UserController::class);
,這一行,實際上就代表了上述所有動作。也就是說,不用寫七個路由規則,一行就搞定。
- CSRF是跨站請求偽造 (英語:Cross-site request forgery)