iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
0

昨天簡介完RESTful API,今天就可以來做API了。

基本路由

最基本的 Laravel 路由是一個 URI 和一個閉包,是以一個非常簡單且直覺的方式來定義路由:

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

預設路由檔案

routes 目錄中的路由檔案定義了所有的 Laravel 路由。這些檔案會自動被框架載入。routes/web.php 定義網頁介面的路由。這些路由被分配到 web 中介層群組,提供像是 session 狀態和 CSRF 保護的特性。routes/api.php 中的路由是無狀態的,且被分配到 api 中介層群組。
對大部分的應用程式來說,你會先由在 routes/web.php 檔案中定義路由開始。routes/web.php 中定義的路由可以透過在瀏覽器中輸入已定義的路由 URL 來訪問。例如,你可以在瀏覽器中瀏覽 http://your-app.dev/user 來訪問以下路由:

Route::get('/user', 'UsersController@index');

routes/api.php 檔案中定義的路由會透過 RouteServiceProvider 被巢狀在一個路由群組中。群組中的路由會自動被加上 /api 前綴,因此你不需要手動在檔案中的每個路由做設定。可以藉由修改 RouteServiceProvider 類別來調整前綴及其他路由群組選項。

可用的路由器方法

路由器能讓你註冊回應任何 HTTP request 的路由:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

有時候你可能需要註冊一個回應多種 HTTP request 的路由。你可以使用 match 方法做到。甚至可以透過 any 方法來註冊回應所有 HTTP request 的路由:

Route::match(['get', 'post'], '/', function () {
    //
});

Route::any('foo', function () {
    //
});

路由參數

必要參數

有時候你可能需要從 URI 中取得一些字段。例如,你可能需要從 URL 取得使用者的 ID。你可以透過定義路由參數來取得:

Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});

你可以依照路由需要,定義任何數量的路由參數:

Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    //
});

路由的參數都會被放在 {} 大括號內,只由字母組成,且不包含 - 字元。使用 _ 來取代 -。路由參數根據它們的順序被注入到路由回呼或控制器中 - 回呼或控制器中的參數名稱不會有任何影響。

選擇性參數

有時候你可能需要指定路由參數,但是讓路由參數的存在是選擇性的。你可以藉由在參數名稱後面加上 ? 達成。記得給該路由的對應參數一個預設值:

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

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

上一篇
DAY14 --- RESTful API
下一篇
DAY16 --- Linux基本操作
系列文
砍掉重練啦! 森林系男孩之後端工程師潛水App挑戰計畫27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言