[英]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.