在完成 Model 與 Migration 的設置後,我們將會定義 API routes,在講到 api routes 之前,先來介紹一下 Laravel 基本的 route 概念。
最基本的 Router 結構為以下格式:
HTTP method or others
HTTP method 常見的有 get、post、put/patch、delete、......等 ( 也可以用 any 直接指定全部 ),除此之外還可以放其他的值,不過此時 Router 的結構可能會有變形,例子如下:
Route::match(['get', 'post'],'/', function(){
//
});
Route::view('/welcome', 'viewName', ['name' => 'Ken']);
Route::redirect('/here', '/there', 301);
URI
除了上圖中最簡單的 URI 之外,也可能涵蓋一些變數,而這些變數定義的來源為 Callback function 的參數,如下例:
Route::get('user/{userId}/product/{productId}', function($userId, $productId){
//
})
Route::get('user/{name?}', function($name = null){
//
})
Route::get('user/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
Callback
Callback function 決定這個 Route 要做的事情,除了上述一種典型的 Callback function 之外,還可以有其他型式。
Route::get('/form', function(){
return view('product.form');
});
Route::get('products', 'ProductsController@index');
定義 routes 的檔案位置在 routes 資料夾,而其中檔案有兩種,第1種是一般針對網頁開發中最常用的 web.php
,其中 middleware ( 之後會提 ) 即是針對瀏覽器端會遇到的問題 (如:session、CSRF 等 )。第2種則是針對開發 API 專用的 api.php
,可以因應多種平台 ( 如:瀏覽器、iOS、Android 等),因為部份平台 ( 如:手機 ) 並沒有支援 session 等功能,因此後端必須要開 API 讓多個前端平台串接,而 api.php
的 middleware 也是針對 API 開發的情形。
由於這次我們是開發純後端 API 的狀況,因此定義 routes 的地點會在 api.php,必須注意 URI 的部分,api.php 都會是以 api/ 作為開頭。
在此專案的 user API routes 如下 :
*routes/api.php
Route::post('register', 'UsersController@register');
Route::post('login', 'UsersController@login');
Route::get('users', 'UsersController@index');
Route::get('users/{id}', 'UsersController@show');
Route::put('users/{id}', 'UsersController@update');
Route::delete('users/{id}', 'UsersController@destroy');
在有些狀況下,為了保有部份的彈性以及直覺度,有些 API 不一定會滿足 RESTful 的風格,上述針對會員功能 ( register、login ) 的 routes 就是典型的例子。
下一篇來介紹 Controller,敬請等候。
參考資料: