Laravel路由具有多个可选参数

时间:2014-03-26 01:24:54

标签: php laravel

我正在使用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}/.../

这里,在第一个参数中,我将有一个函数名,它应该映射到控制器类中的函数,然后是控制器需要的参数。

例如
要访问sendMsg()功能,网址应如下所示:
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?

1 个答案:

答案 0 :(得分:2)

是的,您可以使用最适合构建APIController的{​​{3}}在一条路线中将所有功能合并到API

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

但是,从技术上讲,它根本不是一条路由,而是Laravel为每个函数生成多个routes,为了检查路由,您可以从命令提示符/终端运行php artisan routes命令

要创建resourceful controller,您可以从命令行运行以下命令:

php artisan controller:make APIController

这将创建一个具有6个函数的控制器(仅骨架/结构),每个函数将映射到HTTP动词。这意味着,根据请求类型(GET / POST等),将调用该函数。例如,如果使用http://domain.com/api使用GET请求发出请求,则会调用getIndex方法。

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

您应该检查文档以获得深入的正确理解。这被称为RESTful api。