簡體   English   中英

Laravel路由具有多個可選參數

[英]Laravel routes with multiple optional parameters

我正在使用Laravel構建RESTful API。 我對如何進行路由感到困惑。

我有以下api控制器

class APIController extends BaseController{

    public function sendMsg($authid, $roomid, $msg){

    }

    public function getMsg($roomid, $timestamp){

    }
}

我希望它可以訪問的URL格式如下: http://example.com/api/{functionName}/{parameter1}/{parameter2}/.../ : http://example.com/api/{functionName}/{parameter1}/{parameter2}/.../

在這里,在第一個參數中,我將具有函數名稱,該函數名稱應映射到控制器類中的函數,然后是控制器所需的參數。

例如
要訪問sendMsg()函數,URL應如下所示:
http://example.com/api/sendMsg/sdf879s8/2/hi+there+whats+up

要訪問getMsg()函數,該網址應類似於http://example.com/api/getMsg/2/1395796678


那么...我該如何寫路由,使其能夠處理動態數字和不同的參數需求?

我可以為每個函數名稱編寫一條路由,如下所示:

 Route::get('/api/sendmsg/{authid}/{msg}', function($authid, $msg){ //call function... }); 

和其他功能相同。 如果可以的話,但是有一種方法可以將所有功能組合到一個APIController中嗎?

是的,您可以使用最適合構建API資源豐富的控制器 ,通過一條途徑將所有功能組合到APIController

Route::resource('api' ,'APIController');

但是,從技術上講,它根本不是一條路由,而是Laravel為每個函數生成多個routes ,以檢查路由,您可以從命令提示符/終端運行php artisan routes命令。

要創建一個resourceful controller您可以從命令行運行以下命令:

php artisan controller:make APIController

這將創建一個具有6個功能(僅骨架/結構)的控制器,並且每個功能都將映射到HTTP動詞。 這意味着將根據請求類型(GET / POST等)來調用該函數。 例如,如果使用GET請求使用http://domain.com/api發出請求,則將getIndex方法。

public function getIndex()
{ 
    // ...
}

您應該檢查文檔以得到更深入的了解。 這就是所謂的RESTful API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM